{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# The Variance Gamma Partial Integro-Differential Equation\n",
    "\n",
    "## Contents\n",
    "   - [The VG PIDE](#sec1)\n",
    "   - [Numerical solution of the PIDE](#sec2)\n",
    "   - [Comparison with Monte Carlo, closed formula and Fourier inversion](#sec3)\n",
    "   - [Comparison with the Black Scholes PDE](#sec4)  \n",
    "\n",
    "I suggest the reader to read the notebook **3.1** on the Merton PIDE, and the Appendix **A3** for an introduction to the Variance Gamma (VG) process.\n",
    "\n",
    "The knowledge of the VG process, is not necessary to understand this notebook, which is focused on the numerical solution of a PIDE.    \n",
    "In my opinion the [wiki](https://en.wikipedia.org/wiki/Variance_gamma_process) page is not that clear, and if the reader is interested to understand something more, I suggest to have a look at the notebooks **1.5** and **A3**.\n",
    "\n",
    "Now I'm going to present an approximated equation, whose solution converges to the solution of the original VG equation for $\\epsilon \\to 0$.    The reason for using an approximation, is that the Lévy measure is singular in the origin.\n",
    "Therefore, we have to remove the singularity from the integration region.  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id='sec1'></a>\n",
    "## The VG PIDE   \n",
    "\n",
    "The approximated VG PIDE has the following form:    \n",
    "\n",
    "$$\n",
    "  \\frac{\\partial V(t,x)}{\\partial t} +\n",
    " \\bigl( r-\\frac{1}{2}\\sigma_{\\epsilon}^2 - w_{\\epsilon} \\bigr) \\frac{\\partial V(t,x)}{\\partial x} \n",
    " + \\frac{1}{2}\\sigma_{\\epsilon}^2 \\frac{\\partial^2 V(t,x)}{\\partial x^2}\n",
    " + \\int_{|z| \\geq \\epsilon} V(t,x+z) \\nu(dz) = (\\lambda_{\\epsilon} + r) V(t,x).\n",
    "$$\n",
    "\n",
    "with parameters   \n",
    "\n",
    "$$\n",
    "  \\sigma_{\\epsilon}^2 :=  \\int_{|z| < \\epsilon} z^2 \\nu(dz), \\quad \\quad w_{\\epsilon} := \\int_{|z| \\geq \\epsilon} (e^z-1) \\nu(dz), \\quad \\quad\n",
    " \\lambda_{\\epsilon} :=  \\int_{|z| \\geq \\epsilon} \\nu(dz) .\n",
    "$$\n",
    "\n",
    "and Lévy measure:   \n",
    "\n",
    "$$\n",
    " \\nu(dz) = \\frac{e^{\\frac{\\theta z}{\\sigma^2}}}{\\kappa|z|} \\exp \n",
    " \\left( - \\frac{\\sqrt{\\frac{2}{\\kappa} + \\frac{\\theta^2}{\\sigma^2}}}{\\sigma} |z|\\right) dz,\n",
    "$$\n",
    "\n",
    "where I used the parametrization coming from the Brownian subordination. See equation [35] in **A3** or [wiki subordinator](https://en.wikipedia.org/wiki/Subordinator_(mathematics)).    \n",
    "If you are reading quickly, and you have no time to study the Brownian subordination, just think of $\\theta$, $\\sigma$ and $\\kappa$ as the three parameters of the model.\n",
    "\n",
    "As I said before, the Lévy measure has a singularity at $z=0$.    \n",
    "\n",
    "The activity of the VG process is infinite, i.e. $\\lambda = \\int_{-\\infty}^{\\infty} \\nu(z) = \\infty$. Since the interval $-\\epsilon < z < \\epsilon$ is removed from the region of integration, all the parameters defined above are finite! "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This equation is almost identical to the Merton PIDE, except for the truncation in the integral.\n",
    "\n",
    "At this point, we can restrict the computational domain on $[A_1,A_2]$ and the integral region on $[-B_1,B_2]$, following the idea presented in **3.1**.   \n",
    "\n",
    "Using the same discretization used for the Merton PIDE, we can solve the problem with the IMEX scheme.\n",
    "\n",
    "I will not re-write the discrete equation. Everything will be clear (hopefully) from the following python code:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id='sec2'></a>\n",
    "## Numerical solution of the PIDE"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from scipy import sparse\n",
    "from scipy.sparse.linalg import splu\n",
    "\n",
    "import numpy as np\n",
    "import scipy as scp\n",
    "import scipy.stats as ss\n",
    "from IPython.display import display\n",
    "import sympy; sympy.init_printing()\n",
    "from scipy import signal\n",
    "from scipy.integrate import quad\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "def display_matrix(m):\n",
    "    display(sympy.Matrix(m))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "r = 0.1                                         # risk free rate\n",
    "theta = -0.1; sigma = 0.2; kappa = 0.3          # VG parameters \n",
    "\n",
    "W = - np.log(1 - theta * kappa - kappa/2 * sigma**2 ) /kappa    # martingale correction w\n",
    "\n",
    "dev_X = np.sqrt(sigma**2 + theta**2 * kappa)     # std dev VG process\n",
    "\n",
    "S0 = 100; X0 = np.log(S0)          # stock, log-price\n",
    "K = 100; Texpir = 1                # strike and maturity\n",
    "\n",
    "Nspace = 7                         # space steps \n",
    "Ntime = 3                          # time steps   \n",
    "S_max = 3*float(K)                \n",
    "S_min = float(K)/3\n",
    "x_max = np.log(S_max)  # A2\n",
    "x_min = np.log(S_min)  # A1\n",
    "\n",
    "dx = (x_max - x_min)/(Nspace-1)\n",
    "extraP = int(np.floor(3*dev_X/dx))    # extra points\n",
    "x = np.linspace(x_min-extraP*dx, x_max+extraP*dx, Nspace + 2*extraP)   # space discretization\n",
    "T, dt = np.linspace(0, Texpir, Ntime, retstep=True)                    # time discretization"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In **A3** we defined the \"martingale correction\" term:\n",
    "\n",
    "$$\n",
    " w := \\int_{\\mathbb{R}} (e^z-1) \\nu(dz) = - \\frac{1}{\\kappa} \\log \\left( 1-\\theta \\kappa -\\frac{1}{2}\\bar\\sigma^2 \\kappa \\right).\n",
    "$$\n",
    "\n",
    "In the previous cell I defined $w$ (called `W`) just to compare it with $w_{\\epsilon}$.  We expect that $w_{\\epsilon} \\to w$ as \n",
    "$\\epsilon \\to 0$.\n",
    "\n",
    "Following Section 2.3 of **A.3**, I introduce the auxiliary parameters A and B.    \n",
    "They will make the Lévy measure definition more readable."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "A = theta/(sigma**2)\n",
    "B = np.sqrt( theta**2 + 2*sigma**2/kappa ) / sigma**2\n",
    "\n",
    "levy_m = lambda y: np.exp( A*y - B*np.abs(y) ) / (kappa*np.abs(y))   # Levy measure VG"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The extra points are obtained by `extraP = int(np.floor(3*dev_X/dx))`, where `dev_X` is the standard deviation of the VG process. The choice of 3 stardard deviation is arbitrary, and in the pricer class this number is different (it is 5).\n",
    "\n",
    "The extra points are the points in the intervals $[A_1 - B_1, A_1]$ and $[A_2, A_2 + B_2]$.   \n",
    "In this case we have:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Under this discretization there are 1 extra points\n"
     ]
    }
   ],
   "source": [
    "print(\"Under this discretization there are {} extra points\".format(extraP))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left[\\begin{matrix}0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 44.22\\\\0.0 & 0.0 & 108.01\\\\209.52 & 204.88 & 200.0\\\\342.19 & 337.55 & 332.67\\end{matrix}\\right]$"
      ],
      "text/plain": [
       "⎡ 0.0     0.0     0.0  ⎤\n",
       "⎢                      ⎥\n",
       "⎢ 0.0     0.0     0.0  ⎥\n",
       "⎢                      ⎥\n",
       "⎢ 0.0     0.0     0.0  ⎥\n",
       "⎢                      ⎥\n",
       "⎢ 0.0     0.0     0.0  ⎥\n",
       "⎢                      ⎥\n",
       "⎢ 0.0     0.0     0.0  ⎥\n",
       "⎢                      ⎥\n",
       "⎢ 0.0     0.0    44.22 ⎥\n",
       "⎢                      ⎥\n",
       "⎢ 0.0     0.0    108.01⎥\n",
       "⎢                      ⎥\n",
       "⎢209.52  204.88  200.0 ⎥\n",
       "⎢                      ⎥\n",
       "⎣342.19  337.55  332.67⎦"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "Payoff = np.maximum(np.exp(x)-K,0)             # Call payoff\n",
    "V = np.zeros((Nspace + 2*extraP, Ntime))       # grid initialization\n",
    "offset = np.zeros(Nspace-2)        # vector to be used for the boundary terms\n",
    "\n",
    "V[:,-1] = Payoff                   # terminal conditions \n",
    "V[-extraP-1:,:] = np.exp(x[-extraP-1:]).reshape(extraP+1,1) * np.ones((extraP+1,Ntime)) - \\\n",
    "                 K * np.exp(-r* T[::-1] ) * np.ones((extraP+1,Ntime))  # boundary condition\n",
    "V[:extraP+1,:] = 0\n",
    "\n",
    "display_matrix(V.round(2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let us define the cutoff term $\\epsilon$ and the relevant parameters.\n",
    "\n",
    "Note:  The integrals are performed using the function `quad`. The integrals are split in the two regions: \n",
    "$[-B_1, -\\epsilon]$ and $[\\epsilon, B_2]$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "eps = 1.5*dx    # the cutoff near 0\n",
    "\n",
    "lam = quad(levy_m,-(extraP+1.5)*dx,-eps)[0] \\\n",
    "        + quad(levy_m,eps,(extraP+1.5)*dx)[0]       # approximated intensity lambda\n",
    "\n",
    "int_w = lambda y: (np.exp(y)-1) * levy_m(y)                        # integrand of w_eps\n",
    "int_s = lambda y: np.abs(y) * np.exp( A*y - B*np.abs(y) ) / kappa  # integrand of sigma_eps \n",
    "                                                                   # avoid division by zero\n",
    "\n",
    "w = quad(int_w, -(extraP+1.5)*dx, -eps)[0] \\\n",
    "       + quad(int_w, eps, (extraP+1.5)*dx)[0]    #   w_eps\n",
    "\n",
    "sig2 = quad(int_s,-eps,eps)[0]                   # the small jumps variance\n",
    "sigJ = quad(int_s, -(extraP+1.5)*dx, -eps)[0] \\\n",
    "       + quad(int_s, eps, (extraP+1.5)*dx)[0]    # big jumps variance"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Since we computed $\\sigma_{\\epsilon}^2 :=  \\int_{|z| < \\epsilon} z^2 \\nu(dz)$ we can compute also $\\sigma_J^2 = \\int_{|z| \\geq \\epsilon} z^2 \\nu(dz) $.    \n",
    "We expect that $\\sigma_{\\epsilon}^2 + \\sigma_J^2 = \\text{dev_X}^2$.  \n",
    "Due to the limitation of the integral in $[-B_1,B_2]$, the two are not perfectly equal. But for a big enough choice of $B_1$, $B_2$, the equality is satisfied, as we can see in the output of the cell below.\n",
    "\n",
    "Let us inspect better the parameters we obtained:  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "eps =  0.5493061443340548\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The intensity lam=0.001472 is very small because the mass is concentrated inside [-eps,eps].\n",
      "\n",
      "Theoretical w:  -0.07905508872438688\n",
      "Approximated w, w_eps =  -0.0005999810394699548\n",
      "Integral of int_w inside the truncation [-eps,eps]:  -0.07844382431861299\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The VG variance 0.042981 is equal to the sum of the Var of the decomposed processes 0.043000.\n",
      "Under this discretization the diffusion variance 0.042396 is the major component. \n"
     ]
    }
   ],
   "source": [
    "print(\"eps = \", eps)\n",
    "plt.plot(np.linspace(-1,1,100), levy_m(np.linspace(-1,1,100))); plt.title(\"Lévy measure\"); plt.show()\n",
    "print(\"The intensity lam={:.6f} \\\n",
    "is very small because the mass is concentrated inside [-eps,eps].\".format(lam))\n",
    "print(\"\")\n",
    "\n",
    "print(\"Theoretical w: \", W)\n",
    "print(\"Approximated w, w_eps = \", w)\n",
    "print(\"Integral of int_w inside the truncation [-eps,eps]: \", \n",
    "      quad(int_w, -eps, 1e-10)[0] + quad(int_w, 1e-10, eps)[0])\n",
    "plt.plot(np.linspace(-1,1,100), int_w(np.linspace(-1,1,100))); plt.title(\"(e^z-1) * nu(z)\"); plt.show()\n",
    "\n",
    "print(\"The VG variance {0:.6f} is equal to the sum of the Var of the decomposed \\\n",
    "processes {1:.6f}.\".format(sigJ + sig2, dev_X**2) )\n",
    "print(\"Under this discretization the diffusion variance {:.6f} is the major component. \".format(sig2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The parameter $w_{\\epsilon}$ (i.e. w) is very different from the theoretical $w$ (i.e. W). This is a consequence of the discretization.    \n",
    "I showed that the integral of $(e^z-1)\\nu(dz)$ on $|z|>\\epsilon$ is almost zero.     \n",
    "It follows that the integral in the region $|z|<\\epsilon$ is almost equal to $w$.\n",
    "\n",
    "Ok... now that we have some confidence on this topic, we can continue with the solution of the PIDE.     \n",
    "As usual we create the diffusion matrix:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "dxx = dx * dx\n",
    "a = ( (dt/2) * ( (r-w-0.5*sig2)/dx - sig2/dxx ) )\n",
    "b = ( 1 + dt * ( sig2/dxx + r + lam) )\n",
    "c = (-(dt/2) * ( (r-w-0.5*sig2)/dx + sig2/dxx ) )\n",
    "D = sparse.diags([a, b, c], [-1, 0, 1], shape=(Nspace-2, Nspace-2)).tocsc()\n",
    "DD = splu(D)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In the following cell, I create the Lévy measure vector. \n",
    "\n",
    "The three points in the middle are zero!     \n",
    "This is because the Lévy measure is truncated near the origin, and the region $[-\\epsilon, \\epsilon] = [-1.5\\Delta x, 1.5\\Delta x]$ is excluded."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left[\\begin{matrix}0.00140784532775271\\\\0.0\\\\0.0\\\\0.0\\\\6.46388528653556 \\cdot 10^{-5}\\end{matrix}\\right]$"
      ],
      "text/plain": [
       "⎡0.00140784532775271⎤\n",
       "⎢                   ⎥\n",
       "⎢        0.0        ⎥\n",
       "⎢                   ⎥\n",
       "⎢        0.0        ⎥\n",
       "⎢                   ⎥\n",
       "⎢        0.0        ⎥\n",
       "⎢                   ⎥\n",
       "⎣6.46388528653556e-5⎦"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "nu = np.zeros(2*extraP+3)        # Lévy measure vector\n",
    "x_med = extraP+1                 # middle point in nu vector\n",
    "x_nu = np.linspace(-(extraP+1+0.5)*dx, (extraP+1+0.5)*dx, 2*(extraP+2) )    # integration domain\n",
    "\n",
    "for i in range(len(nu)):\n",
    "    if (i==x_med) or (i==x_med-1) or (i==x_med+1):\n",
    "        continue\n",
    "    nu[i] = quad(levy_m, x_nu[i], x_nu[i+1])[0]\n",
    "\n",
    "display_matrix(nu)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The following code is the same we used for the Merton PIDE. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Backward iteration\n",
    "for i in range(Ntime-2,-1,-1):\n",
    "    offset[0] = a * V[extraP,i]\n",
    "    offset[-1] = c * V[-1-extraP,i]\n",
    "    V_jump = V[extraP+1 : -extraP-1, i+1] + dt * signal.convolve(V[:,i+1],nu[::-1],mode=\"valid\",method=\"auto\")\n",
    "    V[extraP+1 : -extraP-1, i] = DD.solve( V_jump - offset ) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10.467523461720823\n"
     ]
    }
   ],
   "source": [
    "# finds the option at S0\n",
    "oPrice = np.interp(X0, x, V[:,0])\n",
    "print(oPrice)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### All good!!\n",
    "\n",
    "**Alternatively** we could have used the Jump matrix. \n",
    "Let us do it for completeness, but remember that the `signal.convolve` method is more efficient."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left[\\begin{matrix}0.00140784532775271 & 0.0 & 0.0 & 0.0 & 6.46388528653556 \\cdot 10^{-5} & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.00140784532775271 & 0.0 & 0.0 & 0.0 & 6.46388528653556 \\cdot 10^{-5} & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.00140784532775271 & 0.0 & 0.0 & 0.0 & 6.46388528653556 \\cdot 10^{-5} & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.00140784532775271 & 0.0 & 0.0 & 0.0 & 6.46388528653556 \\cdot 10^{-5} & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.00140784532775271 & 0.0 & 0.0 & 0.0 & 6.46388528653556 \\cdot 10^{-5}\\end{matrix}\\right]$"
      ],
      "text/plain": [
       "⎡0.00140784532775271          0.0                  0.0                  0.0   \n",
       "⎢                                                                             \n",
       "⎢        0.0          0.00140784532775271          0.0                  0.0   \n",
       "⎢                                                                             \n",
       "⎢        0.0                  0.0          0.00140784532775271          0.0   \n",
       "⎢                                                                             \n",
       "⎢        0.0                  0.0                  0.0          0.001407845327\n",
       "⎢                                                                             \n",
       "⎣        0.0                  0.0                  0.0                  0.0   \n",
       "\n",
       "       6.46388528653556e-5          0.0                  0.0                  \n",
       "                                                                              \n",
       "               0.0          6.46388528653556e-5          0.0                  \n",
       "                                                                              \n",
       "               0.0                  0.0          6.46388528653556e-5          \n",
       "                                                                              \n",
       "75271          0.0                  0.0                  0.0          6.463885\n",
       "                                                                              \n",
       "       0.00140784532775271          0.0                  0.0                  \n",
       "\n",
       "0.0                  0.0        ⎤\n",
       "                                ⎥\n",
       "0.0                  0.0        ⎥\n",
       "                                ⎥\n",
       "0.0                  0.0        ⎥\n",
       "                                ⎥\n",
       "28653556e-5          0.0        ⎥\n",
       "                                ⎥\n",
       "0.0          6.46388528653556e-5⎦"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "J = np.zeros((Nspace-2, Nspace + 2*extraP))\n",
    "\n",
    "for i in range(Nspace-2):\n",
    "    J[i, i:(len(nu)+i)] = nu\n",
    "\n",
    "display_matrix(J)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Backward iteration\n",
    "for i in range(Ntime-2,-1,-1):\n",
    "    offset[0] = a * V[extraP,i]\n",
    "    offset[-1] = c * V[-1-extraP,i]\n",
    "    V_jump = V[extraP+1 : -extraP-1, i+1] + dt * (J @ V[:,i+1])\n",
    "    V[extraP+1 : -extraP-1, i] = DD.solve( V_jump - offset )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10.467523461720823\n"
     ]
    }
   ],
   "source": [
    "# finds the ATM option at S0\n",
    "oPrice = np.interp(X0, x, V[:,0])\n",
    "print(oPrice)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id='sec3'></a>\n",
    "## Comparison with Monte Carlo, closed formula and Fourier inversion\n",
    "\n",
    "\n",
    "Let us compare the ATM prices obtained from different numerical methods. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "from functions.Parameters import Option_param\n",
    "from functions.Processes import Diffusion_process, VG_process\n",
    "from functions.BS_pricer import BS_pricer\n",
    "from functions.VG_pricer import VG_pricer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Creates the object with the parameters of the option\n",
    "opt_param = Option_param(S0=100, K=100, T=1, exercise=\"European\", payoff=\"call\" )\n",
    "# Creates the object with the parameters of the process\n",
    "VG_param = VG_process(r=0.1, sigma=0.2, theta=-0.1, kappa=0.3)\n",
    "# Creates the VG pricer\n",
    "VG = VG_pricer(opt_param, VG_param)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "PIDE price:  (it takes about 5 minutes to run)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle \\left( 13.39463259652167, \\  244.95605039596558\\right)$"
      ],
      "text/plain": [
       "(13.39463259652167, 244.95605039596558)"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "VG.PIDE_price((30000,30000), Time=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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V18Nb7wBjz/ubxEkjddeg2uugXr1YPRoP6+RSEocCVCqVCnmzJnD3Llz2WeffejevXuk47/00ku899579OvXj9mzZ5ORkcGcOXO48sorI30eEYnQ9u1w5ZUwcCB06uSzjQj07OmbsRo1glGjoGzZSIbdLSWOBDvnnHNYsmQJAC1atKB27dqceOKJ9OzZE4BXX32VO+6449evf+WVV7jzzjsB6NKlC9WrV6d69ep07doVgJtuuomvvvqKZs2a8fTTT3P11VczZ84catasydKlS5P8pxORPNm6FS67DIYP9/WMe+6JZNgXXvClkqZNYeRIKF06kmH3qNBtx83p9tthzpxox6xZ0//d8yIzM5PRo0dzwQUXANC7d28qVKjAli1bOPXUU7nsssto1aoVNWrUoFOnTpQoUYI+ffrQo0cPZs6cSZ8+fZg+fTohBOrWrUu9evXo3r07Y8aM4f333+eAAw6gbt26dO7cmVGjRkX7BxWRaGzeDJdc4gsPL7/s224j0KUL3HWXn9UYODCSQ+Z5phlHAmzZsoWaNWtSp04djjzySG644QbA1yZOPvlkTj/9dFauXMnixYspU6YMDRo0YNSoUSxcuJCMjAxOOukkpk6dyiWXXEKZMmUoW7Ysl156KR9++GGK/2Qiki+bNsFFF/lhit69I0sa//d/njQirEySL4V6xpHXmUHUstc4cpo8eTITJkzgo48+onTp0tSvX//XsxLt2rXjqaeeolq1alx33XWAH8QTkQJswwav9/G//8Hrr/uieJxC8Kokjz4aaWWSfNOMI0l+/vln9t9/f0qXLs3ChQv5+OPf2o/UrVuXlStX0r9/f1q39kot5557LiNGjGDz5s1s2rSJ4cOHc84556QqfBHJj/XroUkT+OgjeOutyJLGQw950mjbFvr2TU3SgEI+40gnF1xwAd27d6dGjRpUrVqV008//Xefv+KKK5gzZw777+9t2GvVqkXbtm057TRvhNiuXTtOOeWUpMctIvn044+eND7/HIYM8WPccQrBi+Z26QLt2/tSSQSHzOMJKBTYt9q1a4edzZ8//w/XCoILL7wwTJgwIdVh/Kqg/j2KpNSaNSHUqBHCvvuGMGpUJENmZYVwyy0hgL/Pyop/TGBGiOO1V7eqUmz9+vUcd9xxlCpVioYNcy0cLCIFwerVUL8+LF4M77zj6xtxysry9fQX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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "VG.plot([50,200,0,100])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Closed formula**:\n",
    "\n",
    "The semi-closed formula is a complicated expression presented in [1]. I will not describe it here.    \n",
    "However, it doesn't work properly. It has a negative bias. Read comments below."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle 13.204016533499598$"
      ],
      "text/plain": [
       "13.204016533499598"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "VG.closed_formula()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Fourier inversion**:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle 13.404682278200958$"
      ],
      "text/plain": [
       "13.404682278200958"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "VG.Fourier_inversion()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Monte Carlo**:\n",
    "\n",
    "(the output includes the price, the standard error and the execution time)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle \\left( 13.405001686552064, \\  0.0034815757649678974, \\  4.264275550842285\\right)$"
      ],
      "text/plain": [
       "(13.405001686552064, 0.0034815757649678974, 4.264275550842285)"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "VG.MC(20000000,Err=True, Time=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The function `MC` uses the following code."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Monte Carlo, call: 13.404649914750003, put: 3.8859258777234893\n"
     ]
    }
   ],
   "source": [
    "N = 10000000\n",
    "rho = 1 / kappa; T = 1\n",
    "w = -np.log(1 - theta * kappa - kappa/2 * sigma**2 ) /kappa  # martingale correction\n",
    "G = ss.gamma(rho * T).rvs(N) / rho                # gamma random vector\n",
    "Norm = ss.norm.rvs(0,1,N)                         # standard normal vector\n",
    "VG_RV = theta * G + sigma * np.sqrt(G) * Norm     # VG vector obtained by subordination\n",
    "S_T = S0 * np.exp( (r-w)*T + VG_RV )              # exponential dynamics\n",
    "call = np.exp(-r*T) * scp.mean( np.maximum(S_T-K,0) )\n",
    "put = np.exp(-r*T) * scp.mean( np.maximum(K-S_T,0) )\n",
    "print(\"Monte Carlo, call: {}, put: {}\".format(call,put))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Put option"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "opt_param_p = Option_param(S0=100, K=100, T=1, exercise=\"European\", payoff=\"put\" )\n",
    "VG_p = VG_pricer(opt_param_p, VG_param)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "PIDE price:  3.8872837369727464\n",
      "Fourier price:  3.8884240817969022\n",
      "Closed formula price:  3.687758337095545\n",
      "MC price:  3.8882342472589313\n"
     ]
    }
   ],
   "source": [
    "print(\"PIDE price: \", VG_p.PIDE_price((12000,9000)) )\n",
    "print(\"Fourier price: \", VG_p.Fourier_inversion() )\n",
    "# the closed formula for the put is calculated by PUT/CALL parity\n",
    "print(\"Closed formula price: \", VG_p.closed_formula() )  \n",
    "print(\"MC price: \", VG_p.MC(10000000) )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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XEjlypU5+eSTmTx5MvPnz6egoIAjjzySGTNmcOaZZ1K5cmWqVKlCjx49ePvtt5P8l4lIKkuJFn+8LfPSVtjHX9Sbb77JtGnT+M9//kOlSpVo167dL2PlBw4cyD333MPhhx/OhRdeCPhEKhGRKKnFX8pWr15N9erVqVSpEvPnz+edd9755b02bdqwZMkSnn32Wfr16wfACSecwMsvv8zatWtZs2YNL730Escff3yyqi8iaSAlWvxlSadOnRg5ciTNmjWjUaNGHHPMMdu837t3b2bPnk316r4EQcuWLbngggto3bo14L8KjjrqqMjrLSLpI6Fr7paW4hZimTdvHo0bN05SjUquc+fOXH311Zxyyl7nqSsV5fU8isjuJWMhFili1apVHHbYYeTm5paZoC8i6UldPRGpVq0aCxYsSHY1RETU4hcRSTcK/CIiaUaBX0QkzSjwi4ikGQX+EmrXrh2vv/76NvsefPBBLrvsMgAWLlxI586dOfTQQ2nVqhUnnXQSb731VjKqKiKyDQX+EurXrx/jxo3bZt+4cePo168f69ev54wzzmDQoEF89tlnzJo1ixEjRvD555+Xah02bdpUqscTkfSgwF9CPXv2ZPLkyWzYsAGAxYsXs2zZMo477jieeeYZjj32WLp27frL55s2bcoFF1yww3E2b97MkCFDOPLII2nWrBkjRowAoEGDBqxYsQKA/Px82rVrB8Btt93GoEGD6NChA+effz5t2rTh448//uV47dq1Y9asWaxZs4YBAwZw9NFHc9RRRzFx4sQEnQkRKW9SYxx/EvIy16xZk9atW/Paa6/RrVs3xo0bR58+fTAzPv74Y1q2bBlXMaNHj+aLL77gww8/JCsri++//36335k1axYzZswgNzeXBx54gAkTJnD77bezfPlyli1bRqtWrbjhhhs4+eSTGTNmDKtWraJ169a0b9+eypUrx30KRCQ1qcW/F4p29xR28xTnzDPPpGnTpvTo0WOH96ZNm8bgwYPJyvJrcI0aNXZbbteuXcnNzQU898/zzz8PwIQJE+jVqxcAU6ZM4d5776VFixa/ZAj96quv9vyPFJGUkxot/iTlZe7evTvXXHMNH3zwAevWrfulld+kSZNtbuS+9NJL5OfnM2TIkB2OEULAzHbYn5WVxZYtWwB+SetcqGir/YADDqBmzZp89NFHjB8/nlGjRv1y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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "VG_p.plot([50,150,0,60])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Remark:\n",
    "\n",
    "There are some discrepancies between the outputs of the four numerical methods.    \n",
    "\n",
    "- The Monte Carlo and Fourier prices are the most reliable\n",
    "\n",
    "- The convergence of the PIDE, when considering the Brownian approximation, is quite slow.\n",
    "  - For the put option we didn't need a huge grid in order to obtain the right price.\n",
    "  - But for the call option I had to use a huge grid (30000x30000). I expect to achieve a better convergence level for higher grid resolution, in particular when increasing the number of time steps.\n",
    "  - Increasing the computational domain $[A_1,A_2]$ may also help.\n",
    "\n",
    "- The semi-closed formula used in VG_pricer is taken from [1]. In my opinion, this formula is not very accurate.     \n",
    "  Unfortunately, I was not able to implement the closed formula proposed in the same paper [1], which relies on the     Bessel function of second kind (well...I tried, but it doesn't work. In VG_pricer it is called `closed_formula_wrong`).     \n",
    "  Therefore I decided to use the semi-closed formula, which is based on numerical integration. \n",
    "  However, this formula still does not produce very accurate values. \n",
    "\n",
    "If you have any comment on these features, please let me know."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id='sec4'></a>\n",
    "## Comparison with the Black Scholes PDE\n",
    "\n",
    "Now let us compare the VG curve with the Black Scholes curve, for a European call option.    \n",
    "The volatility of the BS model is chosen equal to the standard deviation of the VG process. \n",
    "\n",
    "In this case I'm going to select some parameters with the purpose to have high values of skewness and kurtosis for the VG distribution.    \n",
    "In the VG process, the parameter $\\theta$ is associated to the skewness, and the parameter $\\kappa$ is associated to the kurtosis.\n",
    "\n",
    "Looking at the plot we can notice the different shape of the two curves."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "standard deviation:  0.37416573867739417\n",
      "skewness:  -3.05441419328485\n",
      "kurtosis:  14.387755102040819\n",
      "Changing the sign of theta, the skewness becomes:  3.05441419328485\n"
     ]
    }
   ],
   "source": [
    "# Creates the object with the parameters of the option\n",
    "opt_param = Option_param(S0=100, K=100, T=1, exercise=\"European\", payoff=\"call\" )\n",
    "\n",
    "# Creates the object with the parameters of the process\n",
    "VG_param2 = VG_process(r=0.1, sigma=0.2, theta=-0.2, kappa=2.5)\n",
    "VG_param3 = VG_process(r=0.1, sigma=0.2, theta=+0.2, kappa=2.5)\n",
    "diff_param = Diffusion_process(r=0.1, sig=np.sqrt(VG_param2.var))   \n",
    "\n",
    "print(\"standard deviation: \", np.sqrt(VG_param2.var) )\n",
    "print(\"skewness: \", VG_param2.skew)\n",
    "print(\"kurtosis: \", VG_param2.kurt)\n",
    "print(\"Changing the sign of theta, the skewness becomes: \", VG_param3.skew)\n",
    "\n",
    "# Creates the object of the pricer\n",
    "BS = BS_pricer(opt_param, diff_param)\n",
    "VG2 = VG_pricer(opt_param, VG_param2)\n",
    "VG3 = VG_pricer(opt_param, VG_param3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle \\left( 19.387362386673615, \\  1.5161221027374268\\right)$"
      ],
      "text/plain": [
       "(19.387362386673615, 1.5161221027374268)"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "BS.PDE_price((7000,4000), Time=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAawAAAAVCAYAAAAaetqlAAAABHNCSVQICAgIfAhkiAAACgFJREFUeJztnXusHUUZwH+93mJbFCqgbTBKKwVaW0JBQWrsZS3lUaFakPIHESk+8A8EFBHwlR5fPA2xISAhmAiSGEKhGMrzQsBSYgHRBiuogD1StBV7a1v6oFJ6/OObzdmzd2Z3Znb2nBbnl9xsMzPffDPfzjc7M/vtKUQikUgksgdzG/AasHevGxKJRCKR/ys+ArSAL9oU/iiwC7g4l34GcD3wBLBZVXi7ZQNmAncBa4Ed6vow8ClLeV/9rjILVJmiv7c0cqcg/XkV2A78DbgTmGHQczXwKLBGld8A/AFYCOxvkBkBfAFYAbwObFMyFwLv6JEO8LsvTcz2XReoL1XGa0jOpt23LxWUC+EjTdzs6tteV9vur+paAryE3MNNwHJkUurTyPiMRR+ZJu42c/X3bviIq40XFNRvmut8ZMCv/0sQH3hXNrFfU/AKVenPcunfBY4AtiA3anKJwqzcD4H1wFLViAOAI4EEuN+hHlf9rjIrge8b8mYCs4AHculXA5cCQ8A9SD8nAZ8BPgt8nuE35+vA74FB2jvZY4EGcJ7695qczK3IZPIacAewFZgNLAIGgPnIQOimDvAfF5uAn2rSt2jSfPri266QfABx1C3kHC9HKB8BN7vmcWmvi23nI/PJWuAx4BVgHHA6cAswh+Fjy2cs+siAm818/L0bPuJqY5+5zkcG/Pp/JfAUsti4wlToUGR3dbMm75PAIcgqJsHuKZkaaBB4tyZ/ZIl8Vf0+MiZ+q+Q/nUkbj6wo1gHv0+huIauvPKMMOn6sZG7Mpc/L1HVAJn0kshJpIaufbusAPxs31Z8trn3xbVdIRgCPAC8D12LesYT0kSZuds1i215wt+0sYC7DV/njkYm1hUz2KT5j0Xf8NrG3ma+/d8NHXG1chG6uqyLj64svAH/HvDvmKlXZ8SUV2SjtQ27eVuC9Fo1zwUZ/CJmUaUr2VTqN9zGV/muD3GbkaMKWI2hPXlluU+nnF7Tt2d1AR0I9zmjC1Jc8Cd1/YF2ELP4GkJ2g7gEQ2kea+NvVpr06EqrZ9ttK/vpMms9Y9B2/TextFsLfE7rrI6C3sQnTXBdKJsF+vCxUZU9KE/JHgrORFcQKy4YW8XFgIrAY+A9y7jsNeAN4Gnki7yl8RV1/TucZ7YvAf4FjkFXd+kzeALJivsdBz1x1fS6XPl5ddau3NO0oYCywcTfQYcM7gc8BH0Qm7OeAZejPwE2Y+tJrpiCLv0VIn2YZytXhIz52tW1vHbyprjszaT5jscr4tbVZaH8vI4SPgN7GJkxzXWgZG55U1xOAh6DzgbU3MB3Zhm0NoOxodf0X8v7h8Fz+MuRl3L8D6KqT0cig2YWcBWfZAFwGXAc8jwzWIeBgZGs8SPtm6rgEeVewLxLs8glkUF6VK5c6xkRNHR/K/Hsywxcb3dDhw3jgl7m01cC5wG8MMrZ96SX9SL9eQVa2RdThI652dWlvaPqRdz4AD2bSfcZilfFra7Oq/u6Kj4/kMdlYR9FcF1LGlmfUdUCXeSiy/XrYoqKE8m3dlarMTmRlcjwy2UxFDNcCHrfQ5as/hAzAOUpuaUGZechgzkbLvAicVVL3upzMA8iL0jxnqfyXgP0y6f1IZFkqP6dHOlIS7Gy8EFnFjwPGILuKm5BBvw056tNh2xffdoXgB8gqMxsx1kB/xBbaR3zs6tJeHQn+tv2Jkr0vl+4zFn3Hr4/NfP0d6veRPCYb67CZ66rKJLiNl+0YojVnqIruCKT0GtphjnnjjkaiulqYQ0Gr6g8hA7ItbdE+fspzKTLhXIes5MYgRw8PKblrLHSMA04D/gL8U8ln6UMixVrIzbsZiR5ahdzQv6q8E3usI6HagyF1riUl5cr6ErpdthyDjIX8PW+gfwDU6SNZTHZ1ba+OBD/bXqjkXqDzAQN+YzHE+M1isllVf0/ojo9AsY11lM11IWQS3Pr/DwxHmdMpfqHoqvRbtFceOm5R+RdZ6PPRH0Lmw0pmDfqXiWmdd2vyxiAvId+i80iiiIOQb3BWafL6gW8goaXbkRe8DyIf2aUROtN7rCOhmjNOUvJDluWL+hKyXTb0Iw/Q55F3D1ka6B8AdfpIFp1dfdqrI8HdtucrmT/RfveUx2cshvIR0Nssobq/p3XU7SM2Ns5SNteFkklw6/8GDIEsB6qKlgdSeroq84whPw2dvdxCn4/+EDKLlEzDkJ+udi4w5N+t8m3DSUE+dGzRGZpbxGjEObdhHwJdl46Eas64j5J/w0HGpi9V22XDWDqPiIr+0m9r6vSRLDq7+rRXR4Kbbb+myv+R4aHhNviMdx8Znc1C+HtC/T7iY+OyuS6UTIJ9//uQI9CX04Rs0MVa5OXuYQ7Ki1iGbOUOAfZComuyTFPXZiB9oRmFfIS4C4l+0ZGuTE0hyWl6vu9FHKiuttE2ZyNtvZV2NNDuoMOH9OhLF+llwrUvdbED8zg5CvkIeDmyq0mj/7rlIzq7+rS3KpchATIrkciv9cXFtfiMRR8Znc3q8HdXynzEx8Y2c10IGVcOQ77dWmkqsBh5+k0qqSjB7il5uyr3o1z6CUhHNyIrvSwHI5E8oVfyrjLpT9TcW1DmTNpn5u/P5c1B+ridzp8Pmox+i95H+0PYJzX5+2jSjqa9Zc5HQtWtQ0dCuY2noj9PPwg5GmvRGa3m2xfXdgH8QpVbUFLOlQbmI7ZQPuJqV9/25kmws+33VLnfGdqZx2csusq42szH3/MkhPeRFFcbp9jMdSFkwG0ePleV/WqakP8O6y5kO3sSEm2TZZ76g/YEMgNxcpAn+SU5mYuRj+2+g4QmPo0Y/TRkRfxlhn8T8agqM5HOlaWPfh+ZlPPUVferHymLkV8HmI282FyCDOYpwKnI6uByOs+bT0aOepYhW90hJIjgOMSh1iF2yTOIOMMqxPmmIr8ztwM5WsquuLqhI8XVxvMRmzyGhOi+jkzApyCrtvuRo5eqffG59+mvBNh8rxKKUD7iatcquNr2HNrRiE8gwQB5mhl58BuLrjKuNvPxd6jfR8DPxik2c10VGd95+ESkP8a4ir2QG/CUJq9B8Tl301DnfkhEzWpkqzykGnCsoXxT1TchgH7fNk/B/mXiSOTMeAXykncn8ltmS9FHJE0DbkC2uetV+U3Ie4wG5pXRN5Ev9TciDrgaCXOd0CMdKQ3cbHwc8Cvgz0rPm8hR9CDyvciIQH1xbRfI+7DNwHsK+utD2hbTjiWEj7jatUp703xb25aVbzE8fN9nLLrK+NjM1d+hfh+x0aGzMbjNdb4yZW1ramT2RRYfpR9ip5FLR1o0JBJ5uzAWWc3ZfIYQiUTq5QLkOTSzrOAo5AcHXc8mI5E9mblI5JVNCHAkEqmP0cj3lYttBQaQL63jf+AYiUQikW4yBTlGnNDbZkQikUgkEolEIpHI25n/AfyOjEPykq0EAAAAAElFTkSuQmCC\n",
      "text/latex": [
       "$\\displaystyle \\left( 16.117839391531, \\  46.54129958152771\\right)$"
      ],
      "text/plain": [
       "(16.117839391531, 46.54129958152771)"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "VG2.PIDE_price((14000,10000), Time=True)    # negative skewness"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle \\left( 18.12667428279963, \\  46.30427956581116\\right)$"
      ],
      "text/plain": [
       "(18.12667428279963, 46.30427956581116)"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "VG3.PIDE_price((14000,10000), Time=True)    # positive skewness "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABBwAAAGDCAYAAACIkwM0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdd3zVZBfA8d/TskuZKqAooMh4WQXKFmSWDQWhZbSMAhXwZSigoq8sUcDFEmQItFBGGaVsaAFBi8quygaRJZUps5Su5/0jAS9YWkZv017O9/PJp/cmN8lJbtqcnjx5orTWCCGEEEIIIYQQQqQmJ6sDEEIIIYQQQgghhOORgoMQQgghhBBCCCFSnRQchBBCCCGEEEIIkeqk4CCEEEIIIYQQQohUJwUHIYQQQgghhBBCpDopOAghhBBCCCGEECLVScFBiKeIUmqdUqqr1XFkREqpzkqpsDRcX12l1Jm0Wp8QQghhBclNDEqpG0qpl5OZvl8pVTcN49milOqZVusTjksKDk85pdQGpdSoJMa3Vkr9pZTKZL53V0qtVkr9rZS6opQ6oJT6RCmV146xFVVKafMP8A2l1Dml1FSlVGabz7ymlPpRKXVVKXVZKbVNKVXFXjFldFrrplrrQKvjSO9sjr1Md8ZpredrrT2sjEsIIZ4Gkps8XSQ3MWitc2qtjwMopQKUUqPvm15Ga73FkuCEeAJScBABgK9SSt033heYr7WOV0rVBLYA24BSWus8QBMgHqiQBjHm0VrnBMoBNYC3AJRSuYDVwGQgH/ACMBK4nQYxZSjKIL/vQgghMoIAJDdxeJKbCPGU0FrL8BQPQHbgKlDHZlxeIAaoYL6PACY/wjKfB24B+WzGVQQuApmB4sBWc70XgeAHLKcooIFMNuM+A2aYr92BK6m4L57BSBKuAJeBHwAnc9r7wO/AdeAA0MZmvm4YCc94c97jQE1z/GngPNDV5vNZgS+AU8A5YBqQPYl4sprLK2sz7llz3z5nfk+rgQvA3+brwjaf3QJ8YsZ2y9zvW4Ce5vRXgM3AJfN7mI+RQN2Z/wQwGPjV/K6CgWw201sDkcA1c980McfnBmYBUcCfwGjA+TG/k7rAGWCQuR+jgO4Puy+Bd815zgI9zeOpuDmtObDXjP80MMJmvlPmZ2+YQw3z+4wwp08Dvrgv1hXAOza/A8vM7+YPoH8y29jMPKaum/trsO2223yuv/m5wub7Fub+vwL8CJQ3x3cHVtnMdwxYbPP+NOBmvtZAb+CoeQxNAZTNZ/2Ag+a0DUARc7zCON7Pm8fGr5jH6YO2RwYZZJDhYQckN7Fdn+Qm6Tc3+cCM8QTQ2WZ6bmCuuQ9OAv+z+c4eeJyZx1VxwB+IA2IxcpBVNtvekBSOZfN9kufvJLYlGxBk7u8rwE6ggM13ded7KWTu88Ep7U9zmyubr33M7fqP+b4nEGq+HgEsNvfVdWA/4H7f72ySuRRQFdhlfs/ngK9S2h4ZrBssD0AG6wdgJvCtzfs3gUjztQuQANR9xGVuBnrZvP8cmGa+Xgh8iNHCJhvw2gOWURSbk7r5h+cXwM98n8v8gxIINAXyPuF+GINxgs1sDrUx//kC2pvrdwK8gZtAIXNaN4wrKt0BZ/OP7imMf96yAh7mH9Kc5ucnACsxrny4AquAMQ+IaTbwic37t4D15uv8wBtADnM5S+78ETenbzHjKANkMrdpC/+cPIoDjcwYnwW+BybYzH8C2GFudz6ME1dvc1pVjJNlI3OfvIBxhQkgFJhuHjvPmct48zG/k7rmvh1lxt8MiL7zXSe3LzGudP1lbn8OYB73FhzqYlyZcgLKY5ywPJM69my+5zsFhzoYCdud4yMvxsn/zjGyGxgGZAFexkj0Gj9gG6OA2jbLqWQT3xnz9UfAHuBZ830ljGSxGsYx19X8vrKa67tixlEI48T/pznfyxjJx53ER2Mkg3mAlzBO6neSM0+MYkVpjOPnf8CP5rTG5jbmwSg+lOaf34ckt0cGGWSQ4VEGJDe5sz7JTdJvbvKVGefr5r4vaU6fi3ERwtU8Xo4APVI6zrg3RwkARt+33hNAw4c4lh94/k5iW940v+sc5nFSGchl8131tNkGf5v5Hrg/ze0fZL6egVH46WMz7W3z9QiMImIzc91jgJ/NacnmUsBPgK/5OidQPaXtkcG6wfIAZLB+AF4z/0BnN99vs/ljUNj8A1jK5vOfYfxDcxP43wOW2RPYbL5WGP+c1THfzzX/ABVOIa6i5rqvmIPGuJKby+Yzpc0/ymcw/viv5DErmRj/1K7A/GOfwmcjgdbm627AUZtp5cxYC9iMuwS4mfviJvCKzbQawB8PWE9D4LjN+21Alwd81g342+b9FmDUfZ/ZgnlST2J+T2CvzfsTgM993/udk9l0YHwSyyiA0WzUtpVBR+C7x/xO6mL8I2/7j/95oHpK+xIjIRpjM604NifzJNY14c42kXLBQWEkTHeO6V42x3s14NR9yx4KzHnAek9hnCBzJbHtf2IkNBFAbptp3wAf3/f5w8Dr5uvTGEWJDhi/azuAUhiJ50qbeTT3JjuLgffN1+swEyTzvRNGsacIUB8j+aiOWbxIaXtkkEEGGR5lQHKTO8uS3CR95ibxgIvNuMUYFweczXX9x2bam8CWlI4zHq3gkNyx/MDzdxLr9MOmlWQS38tX5no7Puz+BHpg5hoYBaGewCLz/Un+ubAyAthos4z/ALfM18nmUhiFqJHAMw+7PTJYN8h9UwKtdQTGlc3WZu+4VYAF5uS/gUSMK6V3Pv+uNu6VXI5ROU3KUqCGUup5jKvBGqMZIBjN3BWww+xx1y+FEJ8x15cD46S23iaWg1rrblrrwkBZjIr3hKQWYtPB0w2l1EtJfORzjIpwmFLquFLqfZt5uyilIs1Oqa6Y63rGZt5zNq9vmbHdPy4nRrU+B7DbZlnrzfFJ2QxkV0pVU0oVwThxLzdjyqGUmq6UOqmUuobxxzePUsrZZv7TD1guSqnnlFKLlFJ/mvMH3bdNYLQQuCPa3AaAFzEq1vcrgnG1Ispm+6ZjVL+TiiGl7wTgktY6Pok4UtqXz3Pv9t+zL8x9+p1S6oJS6irGrQX3b3+StHFWW4RxggXohNHsE4x98PydmMy4PsA4QSflDYzq/kml1FalVA2baXkwmlaO0VpftRlfBBh03zpeNLcZjOaadTF+97ZiJA2vm8PW+9b/oO+4CDDRZvmXMX5vX9Babwa+xrhSdk4pNcO8bzml7RFCiIciucldkpukz9zkb631TZv3JzG+52cwrsifvG/aC+brRz3OHiS5Y/mB5+8kljMP45aLRUqps0qpz2w7QAU6Y1z8WGozLqX9uRWorZQqiFGACQZqKaWKYtyKEWmzrPu/y2zK6BQ2pVyqB1ACOKSU2qmUavGQ2yMsIAUHccdcoAtGh0xhd05I5h/T7UDbR1mY1voKEAZ4YfwzttD8Jw2t9V9a615a6+cxqr5TlVLFH2KZtzAqvjWUUv/6x1BrfcicXvYB8+e0GU4lMf261nqQ1vploCXwjlKqgXkynQn8F8hvJhj7MP54P6qLGCf4MlrrPOaQWxsdTyUVcyJG1bwjxn5crbW+bk4eBJQEqmmtc2GccLgvLp1MLGPM6eXN+X0eYZtOY9xnmdT425iJmDnk0lqXSWohKX0nKUhpX0ZhXAW748X75l+AcdXpRa11bowmq3e2P7n9dsdCoJ15fFTDuM8QjH3wh01MebTWrlrrZkktRGu9U2vdGuNEHYrxfd/xN0ZfDXOUUrVsxp/GaM5qu44cWuuF5vQ7BYfa5uutPLjg8CCnMZpH2q4ju9b6RzPuSVrryhjNYksAQx5ie4QQ4lFIbiK5SXrNTfIqpVxs3r+E0V/URYz+F4rcN+1Pc9kPe5wlm4ckdyyTwvn7vuXEaa1Haq3/g9HHRwuM37k7RpjbtMCmaJTs/tRaH8MoHvQHvjePjb8wLqBEmMdPSpLNpbTWR7XWHTFyjXHAUqWUy0Nsj7CAFBzEHXMxmsj1wrjv0Na7gJ9S6n2l1HMASqnCQLEUlrkA45f8Df65KoFSqr05Pxj/UGmMezGTpZTKipF0/AVcUkqVUkoNurMspdSLGCe/n1Na1gOW30IpVVwppTA6oUkwBxczxgvm57rzgMQhJeYf2ZnAeJt9+YJSqnEysy3AuDezMzb7EePewFvAFaVUPmD4I4bjitEZ0RWl1AuY/zA+pFlAdzPpcTK3oZTWOgrjBPilUiqXOe0VpdTrjxhbih5iXy42YyytlMqBcR+gLVfgstY6RilVFeOEfccFjKtnD3wettZ6r/m5b4EN5skfjNsXriml3lNKZVdKOSulyqokHommlMqilOqslMqttY7jn+POdj1bML775UqpaubomUBv8+qSUkq5KKWaK6VczelbgXoYzR3PYFz1aIJxb+3eB23TfaYBQ5VSZcxYcyul2puvq5jrzozRDDcGSHiY7RFCiEcguYnkJuk5NxlpnvdqY/xju0RrnYCRf3yilHI1C0PvYLTUeJTj7BzJ5CCmJI9lkjl/308pVU8pVc4sJlzDKJbYxhOH0VeICzBPKeX0kPtzK0Yx7M5Fji33vU9JsrmUUspHKfWseezeyb8SHmJ7hAWk4CAA0FqfwLjnyQXjqq/ttAiMe7brAEfUP03ttmA89ulBVgKvAue01r/YjK8CbFdK3TA/M0Br/Ucyy7lifvYcxj2Frcwq7nWMK8vblVI3MU7m+zCq64/jVWAjxonuJ2Cq1nqL1voA8KU57hzGfZDbHnMdAO9hNI/8WRnNBTdiXA1IktZ6O8Y/dc9j3Jd3xwSMnrwvYmz7+n/PnayRGPf5XwXWACEPO6PWegdGfwDjzfm38k81vwtGc8IDGCfTpdg0e01lD9yXWut1wCTgO/MzP5nz3Hk0WV9glFLqOkYx4u6VeK11NGYv2spoylf9AetfiJEML7CZNwHjKpQbRq/KFzGKErkfsAxf4IQZf2+Mqzn30FqHY/a/oJSqrLXehZGAf42xj49h3K975/NHMI7jH8z31zA6W9pmxpcirfVyjKsGi8zY9mF0gAZGp2gzzXWfxLgP+IuH3R4hhHgYkpsAkpuk19zkL3M5ZzFuqexttmYB6Iexb45j9MG0AKNfKXj442wW8B8zBwl9QAxJHsspnL/vVxBjX1zD6G9hK2ZxxGZ5sRitiZ4DZivjUaYp7c+tGMWj7x/wPlkPkUs1Afab+3Ei0EFrHfMw2yPS3p1eboUQwqEppUpjnHSz6nv7hBBCCCGEeChKqbpAkDb66BBCpEBaOAghHJZSqo3Z3DEvRrV/lRQbhBBCCCGESBt2LTgopU4opX5TRg+6u8xx+ZRS4Uqpo+bPvPaMQQjxVHsT4/7W3zHu4etjbThCCCsopd5WRo/w+5RSC5VS2SQfEUIIIezPrrdUKKVOAO5a64s24z7D6KhtrDIe7ZNXa/2e3YIQQgghxFPL7HguAviP1vqWUmoxsBbjme+SjwghhBB2ZMUtFa35p6fhQMDTghiEEEII8fTIBGRXxvPdc2B09Cb5iBBCCGFn9i44aCBMKbVbKeVvjitgPk4F8+dzdo5BCCGEEE8prfWfGE9ROQVEAVe11mFIPiKEEELYXSY7L7+W1vqs+UzfcKXUoRTnMJkFCn8AFxeXyqVKlbJXjEIIIRzIjdgbHL50mLy3nXj5mjP85z+Qyd6nu7QVFxfH/v37SUhIuKi1ftbqeNIzs2+G1kAxjOe1L1FKPfTjWiUfEUIIIe5z+zYcPgxaQ8mS7N6//4H5iF0zMK31WfPneaXUcqAqcE4pVUhrHaWUKgScf8C8M4AZAO7u7nrXrl32DFUIIYQDuBR9iYrTK/LK+RzsmRxLrogIqFrV6rBSVWJiIk2bNuXo0aPcunXrpNXxZAANgT+01hcAlFIhQE0kHxFCCCEe3YkTUKcO5M6N/u473jo5ld0t9j8wH7HbLRVKKRellOud14AHsA9YCXQ1P9YVWGGvGIQQQjw9tNZ0X9Gdv66dJTgwmlyfT3K4YgPAlClTCAsL48svv7Q6lIziFFBdKZVDKaWABsBBJB8RQgghHs2ff0KDBnD9OoSH879zC/lm1zfJzmLPPhwKABFKqV+AHcAarfV6YCzQSCl1FGhkvhdCCCGeyMTtE1l1ZBVfrEugcgMf6N3b6pBS3YEDB3j33Xdp1qwZvR1w++xBa70dWArsAX7DyH1mIPmIEEII8fDOnTOKDRcuwIYNfBG9kU8jPqVXpV7JzmbXx2KmFmnCKIQQIjk7/9xJrdm1aHYMlu8pgfp5O7i4WB1WqoqNjaV69eqcPn2a3377jYIFC6KU2q21drc6tqeF5CNCCCGeShcvQr16cPw4bNjAtzkO0WtVL7zLeDO/7XwyOWd6YD6SYXvRiouL48yZM8TExFgdSoaVLVs2ChcuTObMma0ORQghHtvVmKt4L/Gi0E3F7HVZUBEhDldsABgxYgR79+4lNDSUggULWh2OMEk+8uQkHxFCiHTsyhXw8ICjR2HNGpbkjcJ/qT9Nizdlbpu5ODs5Jzt7hi04nDlzBldXV4oWLYpxS6Z4FFprLl26xJkzZyhWrJjV4QghxGPRWtNzVU9OXTnJD/M1+aYthBIlrA4r1f3www+MHTuWHj160Lp1a6vDETYkH3kyko8IIUQ6dv06NG0K+/bBihWsLxJH54WdqfVSLZZ6LSWLc5YUF2HPPhzsKiYmhvz588vJ/TEppcifP79ckRFCZGjTd09n6YGlfLpRU6PDYGjb1uqQUt21a9fw9fWlWLFijB8/3upwxH0kH3kyko8IIUQ6dfMmNG8OO3dCcDARZVxpG9yWMs+VYVXHVeTInOOhFpNhWzgAcnJ/QrL/hBAZ2S9//cLAdQNoctyJwc61YMwYq0Oyi/79+3P69GkiIiJwdXW1OhyRBDmfPhnZf0IIkc7ExICnJ2zbBvPnE1mjGC0C6vJi7hfZ4LOBPNnyPPSiMmwLh/TA2dkZNzc3KlSoQKVKlfjxxx8B4xnp/fv3p2zZspQrV44qVarwxx9/WBytEEI4jhuxN/Ba3I78NxKY+/0zOC0KhkwZuoaepGXLlhEYGMgHH3xAjRo1rA5HpFOSjwghhEg1sbHQrh1s3AizZ3OkUSU85nmQK2suwn3Dec7luUdanONlZ2koe/bsREZGArBhwwaGDh3K1q1bCQ4O5uzZs/z66684OTlx5swZXFK5A7OEhAScnZPvoEMIIRyR1po+q/tw7PIxNi9x4tm5S6FQIavDSnVnz57F398fd3d3hg0bZnU4Ih2TfEQIIUSqiI+Hjh1hzRr45htOedaj4ezXAAj3Deel3C898iKlhUMquXbtGnnz5gUgKiqKQoUK4eRk7N7ChQvfnWZr586d1KxZkwoVKlC1alWuX79OQEAA//3vf+9+pkWLFmzZsgWAnDlzMmzYMKpVq8ann36Kl5fX3c9t2bKFli1bAhAWFkaNGjWoVKkS7du358aNG/babCGESHOBvwQS9FsQw7fA6//9HGrXtjqkVJeYmEj37t25desWQUFB0nu/eGiSjwghhHgsCQnQpQuEhMD48Zz3bUujeY24evsqG3w2UPKZko+1WMdo4TBwIJiV/VTj5gYTJiT7kVu3buHm5kZMTAxRUVFs3rwZAC8vL1577TV++OEHGjRogI+PDxUrVrxn3tjYWLy9vQkODqZKlSpcu3aN7NmzJ7u+mzdvUrZsWUaNGkV8fDwvv/wyN2/exMXFheDgYLy9vbl48SKjR49m48aNuLi4MG7cOL766iu5OiaEcAgHLhzgrVV9qPcHfPhMW3j7batDsospU6YQFhbG1KlTKVny8U7wwgKSj0g+IoQQGVFiIvTqBQsXwpgxXO3dnSaB9Th99TRhvmFULFQx5WU8gLRweAJ3mjAeOnSI9evX06VLF7TWFC5cmMOHDzNmzBicnJxo0KABmzZtumfew4cPU6hQIapUqQJArly5yJTC/cfOzs688cYbAGTKlIkmTZqwatUq4uPjWbNmDa1bt+bnn3/mwIED1KpVCzc3NwIDAzl58qR9doAQQqSh6LhovBe2xeXGbeb/UhznOQHggJ3NHThwgHfffZdmzZrRu3dvq8MRGYDkI0IIIR6b1vDf/8KcOTBsGNGD+tNiYQv2nd9HiHcIr7302hMt3jFaOKRQ+U8LNWrU4OLFi1y4cIHnnnuOrFmz0rRpU5o2bUqBAgUIDQ2lQYMGdz+vtU6yV+ZMmTKRmJh4973tY6KyZct2z32S3t7eTJkyhXz58lGlShVcXV3RWtOoUSMWLlxopy0VQghrDFzTj31/H2bDmmwUWroKHPCJDbGxsfj4+JAzZ05mzZolvfdnNJKPSD4ihBAZidYweDB88w0MGULsRx/QLrgN205tY1G7RTQp3uSJVyEtHFLJoUOHSEhIIH/+/OzZs4ezZ88Cxn24v/76K0WKFLnn86VKleLs2bPs3LkTgOvXrxMfH0/RokWJjIwkMTGR06dPs2PHjgeus27duuzZs4eZM2fi7e0NQPXq1dm2bRvHjh0DIDo6miNHjthjk4UQIs0s/G0hM3+ZzdAfwGNkEJQqZXVIdjFixAj27t3LzJkzKViwoNXhiAxI8hEhhBAP7aOP4KuvoF8/EsZ8im9oF9YdW8f0FtPxKuOV8vwPwTFaOFjkzj2TYFwhCAwMxNnZmfPnz9OrVy9u374NQNWqVe/peAkgS5YsBAcH069fP27dukX27NnZuHEjtWrVolixYpQrV46yZctSqVKlB67f2dmZFi1aEBAQQGBgIADPPvssAQEBdOzY8e76R48eTYkSJeyxC4QQwu6OXjqK/3I/ap2CUZUHg9mU29FEREQwbtw4evTogaenp9XhiAxE8hEhhBCP7OOP4ZNPoGdP9Pjx9Fnbh8X7F/NZw8/oVblXqq1Gaa1TbWH24u7urnft2nXPuIMHD1K6dGmLInIcsh+FEOnZ7fjb1JhcgZPnDhP5a01eXLkVUri/PCO6du0aFSpUwMnJicjISFwf8nYRpdRurbW7ncMTJslH7Ef2oxBCpKHPPoP33gNfX/ScOby3eSif//g5H7z2AZ80+OSRF5dcPuJ4WZsQQgiHMWRVP/ZeO8yKiGd4cXmoQxYbAPr378+pU6eIiIh46GKDEEIIIcQjmzDBKDZ06ABz5jD2x8/4/MfP6evel9H1R6f66qQPByGEEOnS8v3LmPzrTAbucKLV+LXw7LNWh2QXy5YtIzAwkA8++IAaNWpYHY4QQgghHNU33xiPFG/bFubO5Zs9M/hg8wd0KteJyc0m26Wzase8VCSEECJDO3HlBH5LfHA/C+M8p4D5yD5Hc/bsWfz9/XF3d2fYsGFWhyOEEEIIRzVrFvTtCy1bwsKFLDy0lLfWvkWLEi0IaB2Ak7JPWwRp4SCEECJdiUuIo8PMxiTejmGRkxdZevW2OiS70Frj5+fHrVu3CAoKInPmzFaHJIQQQghHNHcu9OoFjRvDkiWsPhFGl9Au1ClSh8XtFpPZ2X45iLRwEEIIka58uLQP26OPELz/ZV5ZHGh1OHYzZcoUNmzYwNSpUylZsqTV4QghhBDCEQUHQ/fuUK8eLF/O1qifab+kPW4F3VjZcSXZM2e36+qlhYMQQoh0Y+2vy/j80Cx6/5YNr6+/g2zZrA7JLg4ePMiQIUNo1qwZvXs7ZgsOIYQQQlgsJAQ6d4ZatWDlSnb9vZ+WC1tSLE8x1nVeR66sueweghQcHlPdunXZsGHDPeMmTJhA3759ATh69CgtWrTglVdeoXLlytSrV4/vv//eilCFECJDOHP1NF2WdKL8X/CV/zJ46SWrQ7KL2NhYOnfuTM6cOZk1a5ZdOmgSTw/JR4QQQiRp9WrjSRRVqsCaNRyIPkmToCbkz5GfcN9wnsnxTJqEIQWHx9SxY0cWLVp0z7hFixbRsWNHYmJiaN68Of7+/vz+++/s3r2byZMnc/z48VSNIT4+PlWXJ4QQVolPjKfT5LrEJMYS/NI7ZPdoZnVIdjNixAj27t3LzJkzKViwoNXhiAxO8hEhhBD/smEDvPEGlC8P69ZxIuESHvM8yOSUiXDfcF7I9UKahSIFh8fUrl07Vq9eze3btwE4ceIEZ8+e5bXXXmP+/PnUqFGDVq1a3f182bJl6dat27+Wk5CQwODBgylXrhzly5dn8uTJABQtWpSLFy8CsGvXLurWrQsYiaq/vz8eHh506dKFatWqsX///rvLq1u3Lrt37+bmzZv4+flRpUoVKlasyIoVK+y0J4QQ4smNCvTjh4TjfPOXO6Xe/8LqcOwmIiKCcePG4efnh6enp9XhCAcg+YgQQoh7bN4Mnp5QujSEhfFXphgazm3IzbibhPmGUTxf8TQNxyE6jRy4fiCRf0Wm6jLdCroxocmEB07Pnz8/VatWZf369bRu3ZpFixbh7e2NUor9+/dTqVKlh1rPjBkz+OOPP9i7dy+ZMmXi8uXLKc6ze/duIiIiyJ49O+PHj2fx4sWMHDmSqKgozp49S+XKlfnggw+oX78+s2fP5sqVK1StWpWGDRvi4uLy0PtACCHSwqYdixh9ch7d/siN7+RN4KC3GFy7dg1fX1+KFi3KhAkPPr+IjEvyEclHhBDCUj/8YDz28pVXIDycv7MrPAI8+OvGX2zsspHyBcqneUjSwuEJ2DZjvNN8MSlt2rShbNmytG3b9l/TNm7cSO/evcmUyaj95MuXL8X1tmrViuzZjd5Evby8WLJkCQCLFy+mffv2AISFhTF27Fjc3NyoW7cuMTExnDp16tE3Uggh7Ojc5VP4LO9CycuKrwdvglz277zIKgMGDODUqVPMmzcPV1dXq8MRDkTyESGEEPz8MzRrBi++CJs2cSN3dpovaM7hS4cJ7RBK9cLVLQnLIVo4JFf5tydPT0/eeecd9uzZw61bt+5eRShTpsw9HTItX76cXbt2MXjw4H8tQ2udZIdhmTJlIjExEYCYmJh7ptleFXjhhRfInz8/v/76K8HBwUyfPv3ucpctWyaPWhNCpFuJOhHfL2pxxTmOsKpf4FKustUh2c2yZcsICAjgf//7HzVr1rQ6HGEnko9IPiKEEJbYtQuaNIECBWDTJm7nz0PbhS3Z/qSFFuwAACAASURBVOd2lrRfQsOXG1oWmrRweAI5c+akbt26+Pn53XM1oVOnTmzbto2VK1feHRcdHZ3kMjw8PJg2bdrdDpfuNGEsWrQou3fvBoxENTkdOnTgs88+4+rVq5QrVw6Axo0bM3nyZLTWAOzdu/cxt1IIIexj3CQvwrOeYVJiY8r5DLI6HLs5e/Ys/v7+uLu7M2zYMKvDEQ5I8hEhhHiKRUaChwfkzQubNxNfqACdQjoRfjycWa1m0bb0v1u1pSUpODyhjh078ssvv9ChQ4e747Jnz87q1auZNm0aL7/8MjVq1GD06NH873//+9f8PXv25KWXXqJ8+fJUqFCBBQsWADB8+HAGDBhA7dq1cXZ2TjaGdu3asWjRIry8vO6O++ijj4iLi6N8+fKULVuWjz76KJW2WAghnlxE+Cw+uryMDuefo+fIVVaHYzdaa/z8/Lh16xZBQUFkzpzZ6pCEg5J8RAghnkL79kGjRuDiAps3k/hiYXqt6kXIwRAmNJ5AN7duVkeIulNxTs/c3d31rl277hl38OBBSpcubVFEjkP2oxAirV06cxS3SaXJmqDY885hcr3wstUh2c3XX39Nv379mDJlCn379k315Suldmut3VN9wSJJko/Yj+xHIYR4RIcPw+uvg5MTbN2KLl6cdza8w4TtExj++nBG1B2RZqEkl484RB8OQgghMgYdH0+3z2txPlcCP70+16GLDQcPHmTIkCE0bdqUPn36WB2OEEIIIRzFsWNQvz5oDZs2wauv8vHWUUzYPoH+Vfsz/PXhVkd4lxQchBBCpJkJIxqzOt8FJuXqQKWGvlaHYzexsbH4+PiQM2dOZs+enWRnfEIIIYQQj+zECaPYcPs2fPcdlC7NpO2TGL5lOF0rdGV8k/HpKu+QgoMQQog0sWPuGN5z2oxnTFH+O2yB1eHY1ciRI9mzZw/Lly+nYMGCVocjhBBCCEdw+rRRbLh+HTZvhnLlmPvLXAasH4BnKU++bfUtTip9ddMoBQchhBB29/eebXhFfsjzWbIy6/0f01XlPbVFREQwduxY/Pz88PT0tDocIYQQQjiCqCho0AAuXYKNG6FiRUIPheK3wo8GxRqw8I2FZHJKf//ep6/yhxBCCIejL1+m+1QP/sypCe6wlHx5Clkdkt1cu3YNX19fihYtyoQJE6wORwBKqZJKqUib4ZpSaqBSKp9SKlwpddT8mdfqWIUQQogknT9vFBvOnoV166BKFTYd34T3Um/cn3cntEMo2TJlszrKJEnBQQghhP0kJDBp0GuseDGaz0r3o5pbC6sjsqsBAwZw6tQp5s2bh6urq9XhCEBrfVhr7aa1dgMqA9HAcuB9YJPW+lVgk/leCCGESF8uXoSGDY2+G9auhZo12X5mO60XtaZE/hKs7byWnFlyWh3lA0nB4Qk4Ozvj5uZG2bJlad++PdHR0am6/EmTJlG6dGk6d+7M7du3adiwIW5ubgQHB6fqeoQQwl52DO/JkBcP0ipreQZ2mGh1OHYVEhJCQEAAQ4cOpWbNmlaHI5LWAPhda30SaA0EmuMDgQx7/4vkI0II4aD+/hsaNYIjR2DlSqhTh33n99F0flMK5ixImE8Y+bLnszTEGzduJDtdCg5PIHv27ERGRrJv3z6yZMnCtGnTUnX5U6dOZe3atcyfP5+9e/cSFxdHZGQk3t7eqboeIYSwh78XB+J9I4DndU7mDPjOofttiIqKwt/fH3d3d4YPTz+PohL/0gFYaL4uoLWOAjB/PpfUDEopf6XULqXUrgsXLqRRmI9G8hEhhHBAV69C48Zw4AAsXw4NG/L75d9pNK8R2TNnJ9w3nEKu1t6mGhMTk2J/VVJwSCW1a9fm2LFjAHh6elK5cmXKlCnDjBkzAJg1axZvv/323c/PnDmTd955B4CvvvqKsmXLUrZs2bv3/Pbu3Zvjx4/TqlUrxo0bh4+PD5GRkbi5ufH777+n8dYJIcSj0fv24beyB2dyK4L91lpefbcnrTXdu3cnOjqaoKAgMmfObHVIIglKqSxAK2DJo8yntZ6htXbXWrs/++yz9gkuFUk+IoQQDuD6dWjWDPbuhSVLoGlTzl4/S6N5jYhNiCXMJ4xieYtZGmJ8fDwdO3Zk06ZNyX4u/XVj+RgGDhxIZGRkqi7Tzc3toTv8io+PZ926dTRp0gSA2bNnky9fPm7dukWVKlV444036NChA+XLl+ezzz4jc+bMzJkzh+nTp7N7927mzJnD9u3b0VpTrVo1Xn/9daZNm8b69ev57rvveOaZZ6hWrRpffPEFq1evTtXtFEKIVHflCpPer0dolQS+qjacasVqWx2RXU2ZMoUNGzYwZcoUSpYsaXU44sGaAnu01ufM9+eUUoW01lFKqULA+SddgeQjQgghnlh0NLRsCdu3w6JF0KoVl6Iv0WheIy5EX2Bzl82Uea6MpSEmJibSs2dPQkNDmTRpEv3793/gZ6WFwxO4desWbm5uuLu789JLL9GjRw/AuNexQoUKVK9endOnT3P06FFcXFyoX78+q1ev5tChQ8TFxVGuXDkiIiJo06YNLi4u5MyZk7Zt2/LDDz9YvGVCCPGYEhPZ4d+cIZUu0uqZ1xjY2LFvLzh48CBDhgyhadOm9OnTx+pwRPI68s/tFAArga7m667AijSPKJVIPiKEEA4iJgZat4bvv4e5c6FdO67fvk7T+U35/fLvrOq4iiovVLE0RK0177zzDoGBgYwcOZJ+/fol+3mHaOFg1aPH7twzaWvLli1s3LiRn376iRw5clC3bl1iYmIA6NmzJ59++imlSpWie/fugPGFCSGEo/h7+Lt4P/8jhTLnY47fCofutyE2NhYfHx9cXFyYNWuWQ29rRqeUygE0At60GT0WWKyU6gGcAto/6XokHxFCCPHYbt+GNm1g40aYMwc6dSImPobWi1qzJ2oPy72XU7doXaujZNSoUUycOJGBAwfy0Ucfpfh5aeGQyq5evUrevHnJkSMHhw4d4ueff747rVq1apw+fZoFCxbQsWNHAOrUqUNoaCjR0dHcvHmT5cuXU7u2Yzc/FkI4Jh0Sgt/RLzmTRxHcbbVD99sAMHLkSPbs2cPMmTMpVMjaTptE8rTW0Vrr/FrrqzbjLmmtG2itXzV/XrYyxtQm+YgQQmQgt2/DG2/A+vUwcyZ060ZcQhzeS73ZcmILgZ6BtCzZ0uoomThxIiNGjKBbt258+eWXD3WxxSFaOKQnTZo0Ydq0aZQvX56SJUtSvXr1e6Z7eXkRGRlJ3rx5AahUqRLdunWjatWqgHHVoWLFimketxBCPJEDB5g0sSOh9eHLemOo/mINqyOyq23btjF27Fj8/Pxo06aN1eEI8S+SjwghRAYRGwve3rBmDUybBj17kqgT8Vvpx8rDK5nSbAqdy3e2Okrmzp3LwIEDadu2LTNnzsTJ6eHaLqiM0ITO3d1d79q1655xBw8epHTp0hZF9PhatGjB22+/TYMGDawOBci4+1EIkY5cvcrOxuWo5XGaJsUasqJbmEPfXnDt2jXc3NxQShEZGYmrq6tlsSildmut3S0L4Ckj+Yj9ZNT9KIQQTyQuDjp0gJAQ+PpreOsttNb0W9ePKTunMLreaD6s86HVUbJixQreeOMN6tWrx+rVq8maNes905PLR+SWijRy5coVSpQoQfbs2dPNyV0IIZ5YYiJXunrjVeM0hXIUIKBDsEMXGwAGDBjAyZMnmTdvnqXFBiEeh+QjQgiRTsTHQ+fORrFhwgR46y0Ahn03jCk7pzCoxiA+qP2BxUHC5s2b8fLyokqVKixfvvxfxYaUyC0VaSRPnjwcOXLE6jCEECJV6ZEj8Mu2gTN5nPjBJ9Th+20ICQkhICCADz/8kJo1a1odjhCPTPIRIYRIB+LjwdcXliyBL7+EAQMA+PLHLxn9w2h6VOzB540+t/wizo4dO2jVqhUlSpRgzZo15MyZ85GXIS0chBBCPJ4VK5i84WOWl4ZxjT6jeuHqKc+TgUVFReHv70/lypUZPtyxH/cphBBCCDtJSIDu3WHRIhg3Dt55B4BZe2YxOHww7f/TnuktpltebNi3bx9NmzalYMGChIWFkS/f411UytAFh4zQ/0R6JvtPCPHYDh1i5+BODG6saFm8OW/XeMfqiOxKa42fnx/R0dEEBQWROXNmq0MS6YicT5+M7D8hxFMjMRF69ICgIPjkE3j3XQCWHliK/2p/Gr/SmKC2QTg7OVsa5vHjx/Hw8CBr1qyEh4c/0dO4MmzBIVu2bFy6dElOUo9Ja82lS5fIli2b1aEIITKaq1e50r4lXq1iKOT6PAFt51pehbe3qVOnsn79er744gtKlSpldTgiHZF85MlIPiKEeGokJoK/PwQGwsiR8IHRP8OGYxvotKwTNQrXYJnXMrI4Z7E0zKioKBo1asTt27cJDw+nWLFiT7S8DNuHQ+HChTlz5gwXLlywOpQMK1u2bBQuXNjqMIQQGUliItrXB7+yv3MmtxM/dFjq8P02HDx4kMGDB9O0aVP69OljdTginZF85MlJPiKEcHiJidCnD8yaBR99BMOGAbDt1DbaBLehzHNlWN1pNS5ZXCwN8/Lly3h4eHD+/Hk2bdpEmTJlnniZGbbgkDlz5ieutgghhHhEo0Yx+fxqljeFLxqOc/h+G2JjY/Hx8cHFxYVZs2Y5fEsO8egkHxFCCJEsraFfP5gxA4YONVo3AJF/RdJ8QXMK5yrM+s7ryZMtj6Vh3rhxg2bNmnH06FHWrl1L1apVU2W5GbbgIIQQIo2FhLBz5kgG93KiZYnmvOPg/TYAjBw5kj179hASEvJE9y8KIYQQ4imkNQwcCFOnwpAhRr8NSnHk0hEaBzXGNasrG7tspEDOApaGefv2bTw9Pdm1axfLli2jfv36qbZsKTgIIYRI2W+/caWXL149s1Io93MEeAY4/NX+bdu2MXbsWLp3706bNm2sDkcIIYQQGYnWMGgQTJoEb79tPJFCKU5fPU2jeY3QWhPuG85LuV+yNMz4+Hg6duzIpk2bCAwMpHXr1qm6fCk4CCGESN7Fi+hWLenRMpEzLgl83y7Y4fttuHbtGr6+vhQpUoSJEydaHY4QQgghMhKt4b33YPx46N8fvvwSlOLCzQs0mteIKzFX2NJ1C6WesbYj6sTERHr16sXy5cuZNGkSXbp0SfV1SMFBCCHEg8XFgZcXXz//JyHF4vmi4RfUeLGG1VHZ3cCBAzl58iTff/89rq6uVocjhBBCiIxCa/jwQ/j8c+jbFyZMAKW4GnOVxkGNOXn1JGE+YVQsVNHiMDWDBg0iICCAkSNH0q9fP7usJ8M+FlMIIUQaGDyYXYe/Y5CHpmWJlk9Fvw0hISHMmTOHoUOHUqtWLavDEUIIIURGMmIEjBkDb74JkyeDUkTHRdNyYUt+O/8by7yWUbtIbauj5OOPP2bChAkMHDiQjz76yG7rkYKDEEKIpM2ezZUZk/DqmYtCuV94KvptiIqKwt/fn8qVKzN8+HCrwxFCCCFERjJqlDH06GF0FOnkRGxCLO0WtyPiVARBbYJo9mozq6Nk0qRJDB8+nG7duvHll1/aNb+ze8FBKeWslNqrlFptvs+nlApXSh01f+a1dwxCCCEe0U8/ofv0pkfPZzmdKZpFbyxy+H4btNb4+fkRHR1NUFAQmTNntjokIYQQQmQUn34Kw4dDt27GIzCdnEhITKDL8i6sO7aO6S2m413W2+oomTt3LgMGDKBNmzbMnDkTJyf7lgTSooXDAOCgzfv3gU1a61eBTeZ7IYQQ6cWff0LbtnzdMDchz1xgbIOxT0W/DVOnTmX9+vV8/vnnlCplbSdOQgghhMhAPvvM6LfBxwe+/RacnNBa03dNX4L3BzOu4Th6Ve5ldZSsWLECPz8/GjRowIIFC8iUyf5dOtq14KCUKgw0B761Gd0aCDRfBwKe9oxBCCHEI4iJgTZt2OVylUHVrjw1/TYcOnSIwYMH06RJE/r27Wt1OEIIIYTIKL76yngiRceOEBAAzs4ADN00lBl7ZjD0taG8W+tda2MENm/ejJeXF+7u7oSGhpItW7Y0Wa+9WzhMAN4FEm3GFdBaRwGYP5+zcwxCCCEehtbg78+V33bi1SMXBV0LPRX9NsTGxtK5c2dcXFyYPXu2w2+vEEIIIVLJpEkwaBC0bw9z594tNoyNGMu4bePo496HT+p/YnGQsGPHDlq1akWJEiVYu3YtOXPmTLN1263goJRqAZzXWu9+zPn9lVK7lFK7Lly4kMrRCSGE+Jfx49Hz5tHj/f9wOv4Swe2CHb7fBoCRI0eyZ88eZs6cSaFChawORwghhBAZwZQpMGAAtG0L8+eDeXvCtF3TGLppKB3LduTrZl9bfiFj//79NG3alAIFChAWFka+fGmb29mzhUMtoJVS6gSwCKivlAoCzimlCgGYP88nNbPWeobW2l1r7f7ss8/aMUwhhBCEhcGQIXztX4EQDjCmwZinot+Gbdu2MXbsWLp3706bNm2sDkcIIYQQGcH06fDf/0Lr1rBwIZgdTS/8bSF91/Sl+avNCfQMxElZ+1DIP/74Aw8PD7JmzcrGjRstubBitz2gtR6qtS6stS4KdAA2a619gJVAV/NjXYEV9opBCCHEQzh2DLy92VWrGINfPEiLEi2ein4brl27hq+vL0WKFGHixIlWhyOEEEKIjGDWLOjdG1q0gMWLIUsWANYcWUOX0C7ULlKbJe2XkNnZ2qddRUVF0bBhQ2JiYggPD6dYsWKWxGH/bin/bSywWCnVAzgFtLcgBiGEEADXrkGrVlzJBt6t4yjgVICA1gGWV+TTwsCBAzl58iTff/89rq6uVocjhBBCiPQuIAB69YKmTWHp0rvFhq0nttJuSTsqFKjAqo6ryJ45u6VhXr58GQ8PD86fP8+mTZsoU6aMZbGkScFBa70F2GK+vgQ0SIv1CiGESEZiIvj6oo8cxm9CTU79/TNbu20lf478VkdmdyEhIcyZM4cPP/yQWrVqWR2OEEIIIdK7gADw84NGjSAkBLJmBWD32d20XNiSonmKst5nPbmy5rI0zBs3btCsWTOOHDnCunXrqFq1qqXxOP4lLCGEEEkbMQJWrmTiGE+WX4pgXMNx1HyxptVR2V1UVBT+/v5UrlyZ4cOHWx2OEEIIIdK7wECj2NCwIYSGgvlIyUMXD9FkfhPyZc9HuG84z+R4xtIwb9++jaenJ7t27SI4OJj69etbGg9Yc0uFEEIIqy1dCh9/zM99WjIkZiWtS7bm7epvWx2V3Wmt8fPzIzo6mqCgIDJntvb+SiGEEEKkc4GB0L27UWxYsQKyG7dLnLhygoZzG+KsnNnYZSOFcxW2NMz4+Hg6duzIpk2bCAwMxNPT09J47pCCgxBCPG1+/RW6duVSHXe8Xt3Li04vMqf1HMsf25QWpk6dyvr16/n6668pVaqU1eEIIYQQIj2bOzfJYsNfN/6i0bxG3Iy7ydZuWymer7ilYSYmJtKrVy+WL1/OxIkT6dKli6Xx2JKCgxBCPE0uXIBWrUjMm4cuXXNz7uyvbPPbRt7sea2OzO4OHTrE4MGDadKkCX379rU6HCGEEEKkZ3PnQrdu0KDBPcWGv2/9TeOgxpy9fpaNvhspX6C8pWFqrRk0aBABAQGMGDGC/v37WxrP/aQPByGEeFrExkLbtnDuHJ990Ya1pzcxvvF43J93tzoyu4uNjcXHxwcXFxdmz579VLTmEEIIIcRjmjcvyWLDzdibNF/QnEMXDxHqHUqNF2tYGyfw8ccfM2HCBAYMGMCwYcOsDudfpIWDEEI8DbSGPn0gIoKts4fx4ZHRdCjbgT7ufayOLE2MGjWK3bt3s2zZMgoVKmR1OEIIIYRIr4KCoGtXqF/fKDbkyAHA7fjbtAluw/Y/t7Ok/RIavdLI4kBh8uTJDB8+nG7duvHVV1+lywsqUnAQQoinwcSJMHs25z56mw6XZ1A8X3FmtJiRLk9MqW3btm2MGTOG7t2707ZtW6vDEUIIIUR6FRQEXbpAvXqwcuXdYkN8YjydQzoTfjyc2a1m07a09fnEvHnz6N+/P23atGHmzJk4OaXPmxek4CCEEI5u/XoYNIiEtm3o9MovXDlzhTCfMFyzulodmd1du3YNX19fihQpwsSJE60ORwghhBDp1fz5RsuGevVg1aq7xQatNW+uepNlB5cxvvF4ulfsbnGgsGLFCrp3706DBg1YsGABmTKl33/r02cZRAghROo4eBC8vaFcOUa9WZLNJzYztdlUyhUoZ3VkaWLgwIGcPHmSefPm4erq+AUWkTSlVB6l1FKl1CGl1EGlVA2lVD6lVLhS6qj50/F7ThVCCJG0+fONlg116/6r2DAobBCzI2czrM4wBlYfaG2cwHfffYe3tzfu7u6EhoaSLVs2q0NKlhQchBDCUV26BC1bQrZshH0zmI9/Gkc3t27pojKfFkJCQpgzZw7vv/8+tWrVsjocYa2JwHqtdSmgAnAQeB/YpLV+FdhkvhdCCPG0WbDAKDa8/vo9xQaA0d+PZvzP4+lXtR8j6o6wLkbTjh07aNWqFcWLF2ft2rXkzJnT6pBSpLTWVseQInd3d71r1y6rwxBCiIwjLg6aNIGICP5ctxi33T0pmLMg23tuJ0fmHCnPn8FFRUVRrlw5ihQpwk8//USWLFmsDskulFK7tdaO/5iRJ6CUygX8ArysbZIepdRhoK7WOkopVQjYorUumdyyJB8RQggHs2AB+Pr+U2xwcbk7afL2yfRf358uFbowp/UcnJS11+r3799PnTp1yJMnDz/88APPP/+8pfHYSi4fkRYOQgjhiAYOhM2biZs+lQ4nv+BW3C2WtF/yVBQbtNb06NGD6Oho5s+f77DFBvHQXgYuAHOUUnuVUt8qpVyAAlrrKADz53NJzayU8ldK7VJK7bpw4ULaRS2EEMK+Fi40ig116vyr2DDvl3n0X98fz1KezGo1y/Jiwx9//IGHhwdZs2YlPDw8XRUbUiIFByGEcDRTpxrDkCH874UjRJyKYEbLGZR6ppTVkaWJb775hnXr1vH5559TqtTTsc0iWZmASsA3WuuKwE0e4fYJrfUMrbW71tr92WeftVeMQggh0tLCheDjYxQbVq++p9iw4tAKuq/oTv1i9Vn4xkIyOVnbIWNUVBQNGzbk1q1bhIWF8fLLL1saz6OSgoMQQjiSzZuhf39o0YJV3Wvy2Y+f0btybzqV62R1ZGni0KFDDBo0iCZNmtC3b1+rwxHpwxngjNZ6u/l+KUYB4px5KwXmz/MWxSeEECItLVpkFBtq1/5XsWHzH5vxWupF5ecrE+odSrZM1nbIePnyZTw8PDh37hzr1q2jbNmylsbzOKTgIIQQjuLYMWjXDkqV4sTUT+m60o+KBSsyvsl4qyNLE7Gxsfj4+ODi4sLs2bNRSlkdkkgHtNZ/AaeVUnf6Z2gAHABWAl3NcV2BFRaEJ4QQIi0tWgSdOxvFhjVr7ik27PhzB60WtuLVfK+yrvM6yx8ffuPGDZo3b86RI0dYsWIF1apVszSex5V+H9gphBDi4V29ajyRwsmJ2OVL8VrfhQSdwJL2SyyvzqeVUaNGsXv3bpYtW0ahQoWsDkekL/2A+UqpLMBxoDvGRZfFSqkewCmgvYXxCSGEsLfgYKPY8Npr/yo27Du/j6bzm1IgZwHCfMPIlz2fhYHC7du3adu2LTt37mTp0qU0aNDA0niehBQchBAio0tIgA4djBYOGzcy5Ng37Dy7k2Vey3gl3ytWR5cmfvzxR8aMGUO3bt1o27at1eGIdEZrHQkk1Xt2xs3ghBBCPLw7xYZatf5VbDj+93E85nmQ1TkrG3038ryrtR0yxsfH06lTJ8LDwwkMDMTT09PSeJ6U3FIhhBAZ3bvvwvr1MHUqS5+9wKQdkxhYbSBtSz8d/3hfv34dX19fihQpwsSJE60ORwghhBDpyeLFRrGhZk1YuxZy5rw76ez1szSc25DbCbcJ9w2nWN5iFgYKiYmJ+Pv7ExISwoQJE+jSpYul8aQGaeEghBAZ2ezZ8NVX0L8/x96oh9/0SlR7oRrjGo2zOrI0M3DgQE6cOMH3339Prly5rA5HCCGEEOnFkiXQqVOSxYZL0ZfwmOfBhegLbOqyiTLPlbEwUOOx3oMHD2bOnDkMHz6cAQMGWBpPapGCgxBCZFQREdC7NzRqxK2xo2k/tw6ZnTOzuP1isjhnsTq6NBESEsLs2bP54IMPqFWrltXhCCGEECK9WLIEOnaEGjX+VWy4dvsaTeY34djlY6zrvI6qL1S1MFDD6NGjGT9+PP3792f48OFWh5NqpOAghBAZ0YkT0LYtFCsGwcEM3DiYyL8iWdNpDS/lfsnq6NJEVFQU/v7+VKpUyaFOzEIIIYR4QskUG27F3aLVwlZE/hVJiFcI9YrVszBQw+TJkxk2bBhdu3Zl/PjxDvWkLenDQQghMpqrV6F5c4iLg5UrCTq9hhl7ZjD0taE0e7WZ1dGlCa01PXr04ObNmwQFBZEly9PRokMIIYQQKVi06N5ig+s/j7eMS4ij/ZL2fH/ye+Z6zqVlyZYWBmqYN28e/fv3x9PTk2+//RYnJ8f6F11aOAghREYSH288keLIEdiwgQP5Enhz5pvUKVKHUfVGWR1dmvnmm29Yt24dkydPpnTp0laHI4QQQoj0YP586NLln0df2rRsSEhMoEtoF9YcXcM3zb+hY7mOFgZqWLFiBd27d6d+/fosXLiQTJkc799zx9siIYRwZG+/bTyRYuZMbr5WjXYzq5AzS04WvrGQTE5Px5/0w4cPM3jwYJo0acJbb71ldThCCCGESA/mzYNu3eD112HVqnsefam1pu+avizat4ixDcbS2723dXGavvvuO7y9valcuTKhoaFky5bN6pDs4unIToUQwhF8/bUxDBqE7tGDPqFdOXTxEOG+4ZY/MzqtxMXF0blzZ3LkyMHs2bMd6h5HIYQQQjymgADwrA6EZwAAIABJREFU84P69WHlSsiR4+4krTXvbXzv7u2n7732nnVxmnbu3EmrVq0oXrw469atw9Xmtg9HIwUHIYTICNav/z979x2XVf3+cfx1RMSRWo5KJTLNSi1X9m2qpSwHIAiaCi5cpZaiOcrcOEpTMXOCmjhYiqCADBEzJ/ptuipHQyHNBU7G5/fHwd+3EhWR+z43cD0fjx6M+5zjO0vP4bo/n+uC998HV1eYNYvA/way+rvVTH5zMu3qtTM6ndlMnjyZAwcOEBERQa1atYyOI4QQQgijBQVB//5gbw+bNkGFCv94ecbOGXy661Pebfku/m39DQr5P4cOHcLZ2ZlHH32U+Ph4qlWrZnQkkypZHSmEEKIk+uEH6NoVXngB1qzhm7PfMzRmKA71HPio1UdGpzObXbt2MWPGDPr06YOHh4fRcYQQQghhtGXLwNcXHB3zLTYs3LeQj7Z9hHcTbxZ0WGD4ysgTJ07g4OCAjY0NCQkJ1K5d8leoygoHIYSwZH/+CS4uetOj6GguW+fiFeZF9YrVCfYIxqqMldEJzSIjIwMfHx/s7OyYP3++0XGEEEIIYbTFi+Gdd6BDB4iIgH/1QAj+LpihsUNxfdaVINcgymjGvtd+5swZHBwcuHbtGjt27KBevXqG5jEXKTgIIYSlun4dOneG9HTYsQNla0v/8G6cuHCC5N7JPFrpUaMTms3w4cM5efIkKSkpVKlSxeg4QgghhDDSwoUwdCh06gTh4WBj84+XI49E0ieyD22fakuIZwjWVtYGBdWdP38eJycn0tLSSEpK4vnnnzc0jzlJwUEIISyRUvoSwd27ISwMWrYkYM98wg6FMct+Fq2ebGV0QrPZuHEjQUFBfPjhh7zxxhtGxxFCCCGEkQIC/tfXKjT0tmJD0vEkuoV3o2XtlkR2i6R8WWOnP2RmZtKxY0eOHj1KTEwML7/8sqF5zE0KDkIIYYmmTYO1a8HfHzw92fXbLkYljMLtWTc+eO0Do9OZzZkzZxgwYAAtWrRg4sSJRscRQgghhJHmzgU/P3B3h/XroVy5f7y8+7fduK1349nqzxLTM4bKNsZOf7hx4wYeHh7s27eP8PBw2rUrPY2+b5GmkUIIYWlCQmDCBOjVC8aN4+yVs3QN64pdVTtWdl5peMMjc1FK4evry5UrVwgODqbcvx4qhBBCCFGKzJ6tFxu6dNGflf71XPBd+nd0WNuBxx96nHifeKpVMHb6Q3Z2Nj169CAhIYGgoCDc3d0NzWMUWeEghBCWZM8e6N0b3ngDli4lR+XSY0MPzl09x27f3Txc/mGjE5rNokWLiI2NZcGCBTRs2NDoOEIIIYQwyqxZMHYseHnBmjVg/c+eDD/99ROOqx2pZF2JxF6JPP7Q4wYF1eXm5jJw4EA2bNjAvHnz6N27t6F5jCQFByGEsBSnToGbG9SpAxs3go0NU5Inkng8keUuy2leq7nRCc3m6NGjjBo1CicnJ4YMGWJ0HCGEEEIYZfp0+OgjePttWL0ayv7zR9jfLv2G/Wp7clQO23ttp+7DdY3JmUcpxahRo1ixYgUTJ07k/fffNzSP0aTgIIQQluDyZX385Y0bsH071KhB3M9xTN0xlT7N+tCveT+jE5pNVlYW3t7eVKhQgaCgoFKzhUQIIYQQ/zJ1qr7NtEcPWLXqtmLDn1f+xGG1AxevXyS5dzLP1XjOoKD/4+/vz9y5c3nvvfek/xRScBBCCOPl5ED37nDoEMTFQcOG/HrpV3pu6MkLj73Awg4LS9UP3VOmTCE1NZWIiAhq165tdBwhhBBCGGHyZJg0CXx8YMUKsLL6x8sXr1/EKdiJXy/9SrxPPC1qtTAm5998/vnnfPzxx/Tu3Zu5c+eWque3O5GCgxBCGG3kSIiJgUWLwN6eG9k38ArzIjs3m3CvcCpaVzQ6odns2rWL6dOn06dPHzw8PIyOI4QQQghzUwomTtRXN/TpA8uX31ZsuHLzCp3WduLHP38kqnsUb9gZPzY7ODiYYcOG4ebmxvLlyylTRuYzgBQchBDCWAsXwvz5+jzpwYMBGBU/in1/7COiawQNqjcwOKD5ZGRk4OPjg52dHfPnzzc6jhBCCCHMTSm9X8OMGdCvHyxbBv/6wf1G9g08Qj3Y/ftu1ndZj/PTzgaF/Z+oqCj69OlD27ZtWb9+PWXLyo/Zt8jvhBBCGGXzZnjvPXB1hTlzAFj/w3o+3/85fq/44dGwdL3DP3z4cE6ePElKSgpVqlQxOo4QQgghzEkpfRLFJ5/AgAGwePFtxYbs3Gx6buhJ/C/xBLoG4tXYy6Cw/5OcnEzXrl158cUXiYyMpHz58kZHsiiyzkMIIYxw8KDebbl5c1i7FqysOHz2MP2j+vP6E68z036m0QnNKjIykqCgIMaMGcMbbxi/LFIIIYQQZqQUjB6tFxsGD8632JCrchkQPYCIwxHMdZprEQ219+/fj6urK08//TQxMTFUrlzZ6EgWR1Y4CCGEuf32G3TqBNWrQ3Q0VKpE5s1MuoR2oVK5SoR4hmBtZX3v65QQaWlpDBgwgBYtWjBp0iSj4wghhBDCnJSC4cMhIACGDIEFC+BfzRaVUvht9WPlNyuZ2GYiw18ZblDY/zl06BDOzs7UrFmT+Ph4qlevbnQkiyQFByGEMKfLl6FjR7hyBb7+GmrVQinFwOiBHP3rKPHe8dSpUsfolGajlKJfv35kZmYSHBxMuXLljI4khBBCCHPJzYV334UlS/Siw2ef3VZsAJicMpn5e+cz/OXhTGxj/KjJEydO4ODgQLly5UhISJCpWnchBQchhDCXrCzw8oLDh/WpFM8/D8Ci1EWs+2Ed096aRrt67QwOaV6LFi0iNjaWBQsW0LBhQ6PjCCGEEMJccnL0Xg0rVsCYMXqjyHyKDXN3z2VyymT6NuvLHKc5ho+aPHPmDA4ODly7do0dO3ZQv359Q/NYOik4CCGEOSilLxOMj9fHOzk4ALDvj30MjxtOhwYdGNdqnMEhzevo0aOMGjUKJycnhgwZYnQcIYQQQphLdrY+8nLNGn0E5sSJ+RYbgv4bhF+8H56NPFnmsowymrEtCC9cuICTkxNpaWkkJSXxfN6bR+LOpOAghBDm8Mkn+mincePA1xeAv67+hVeYF7Ur12a1+2rDb6LmlJWVhbe3NxUqVCAoKMjwdyuEEEIIYSZZWdCzJ4SFgb8/fPhhvoeF/RjGgOgBONV3Itg9GKsyVmYO+k9XrlyhY8eOHD16lJiYGF5++WVD8xQXUnAQQghTCw3Vxzx16wbTpgF6p2WfjT6kZabxdb+vqVahmsEhzWvKlCmkpqYSHh4u+x6FEEKI0uLGDf15aNMmmD0bRo7M97C4n+PouaEnr9q+SkTXCGzK2pg56D/duHEDd3d39u7dS3h4OO3ala4tsA9CCg5CCGFKu3ZBr17w+uuwcuX/j3ia/tV0Yn+O5YsOX9CydktjM5rZrl27mD59Or1796ZLly5GxxFCCCGEOVy/Dl266H2sFiyAoUPzPeyrU1/hEeLB848+z5YeW6hUrpKZg/5TdnY2PXv2JCEhgRUrVuDu7m5onuJGCg5CCGEqv/wCbm7wxBMQGQnlywOQeDyRCckT6PlCTwa3HGxwSPPKyMjAx8cHOzs7AgICjI4jhBBCCHO4elV/JkpK0idSDByY72EHzxyk07pO2FW1I847jqrlq5o56D8ppRg0aBARERHMnTuXPn36GJqnOJKCgxBCmMJff0GHDvq4p5gYqFEDgN8v/073iO40rNmQJZ2WlLreBcOHD+fkyZOkpKRQpUoVo+MIIYQQwtQyM6FTJ/jqK30iRe/e+R52+OxhnIKdeKT8IyT2SuTRSo+aOeg/KaUYNWoUQUFBTJgwgeHDhxuap7iSgoMQQhS1GzfA3R1OntQr+Q0aAJCVk0W38G5cy7pGRNcIw5cImltkZCRBQUGMGzeON954w+g4ohTRNO0kkAHkANlKqZaaplUDQoC6wEmgq1LqglEZhRCiRLp0SX8DZu9eCA6G7t3zPezkxZM4rHbASrMiwScB2yq2Zg56O39/fz777DOGDRvGpEmTjI5TbJWeluhCCGEOSkG/fnoVf+VK+NsP1mMSx7Drt10EugbyXI3njMtogLS0NAYMGECLFi3kpi2M8pZSqplS6lbTlLFAklKqAZCU97UQQoiicuGCPgZ83z4ICbljseFMxhnsv7TnStYV4n3iaVC9gZmD3u7zzz/n448/plevXsybN6/UrUgtSlJwEEKIojRxIqxdq0+j+NuNNfxQOHP3zGXYf4bR7fluBgY0P6UU/fr1IzMzk+DgYMqVK2d0JCEA3IBVeZ+vAjobmEUIIUqWc+egbVv49lvYsEFvFpmP89fO4xjsSFpmGrE9Y2nyWBMzB71dcHAww4YNw83NjcDAQMqUkR+ZH4T87gkhRFEJCoKpU/UVDn+bKX3sr2P029SPl+u8zGzH2QYGNMbixYuJjY3lk08+oWHDhkbHEaWTAuI1TTugadqtTmWPKaXOAOR9zHezsKZpAzVNS9U0LfXs2bNmiiuEEMVYejq89RYcOaKPv3RxyfewjBsZtF/TnmN/HWPT25t4xfYVMwe9XXR0NH369KFt27asX7+esmWlA8GDkt9BIYQoCnFxesdlBwdYvBjylt5dzbqKZ6gn5azKEeoVSjmr0vXu/tGjRxk5ciROTk4MGTLE6Dii9HpdKXVa07RHgQRN044U9ESl1FJgKUDLli2VqQIKIUSJcPo0tGsHv/4KW7boqxzycT37Om7r3Thw+gARXSNoV6+dmYPebvv27Xh5efHiiy8SGRlJ+bzpYuLBSMFBCCEe1MGD4OkJL7wA4eFgbQ3oWwne3fIuP/z5A7E9Y7GramdwUPPKysrC29ubChUqEBQUJEsShWGUUqfzPv6padpG4D9AuqZptZRSZzRNqwX8aWhIIYQo7n77TS8wpKXpb8S0apXvYbeaaCefTGa1+2rcnnMzc9Dbpaam4uLiQv369YmJiaFy5cpGRyox5OlPCCEexMmTevfl6tX1Sv7fRj0uO7iMVd+u4uPWH+P0tJNxGQ0yZcoUUlNTWbp0KbVr1zY6jiilNE2rpGla5VufA47AD0AUcGs2W29gkzEJhRCiBDhxAlq3hrNnISHhjsWGXJVL3019iToaxcIOC/Fu4m3moLc7dOgQzs7O1KhRg/j4eKpXr250pBJFVjgIIURhnT8Pzs76GMxt2+BvP1Tv/2M/w2KH4VTfiQltJhgY0hi7du1i+vTp9O7dmy53aBQlhJk8BmzM6zBeFlirlIrTNG0/EKppmi/wK+BlYEYhhCi+fv5ZX9mQmamPA3/xxXwPU0oxNGYoa75fw/S203n3pXfNHPR2J0+exNHREWtraxITE6lTp47RkUockxUcNE0rD+wAbPJ+nXCl1ESZey2EKBGuXwdXV72in5AAjRr9/0vnrp6jS2gXaj1UizUea7AqY2VgUPPLyMjAx8cHOzs7AgICjI4jSjml1HGgaT7f/wswftOwEEIUZ0eO6MWGrCxIToamt/11+/8+TPqQRamLGP3aaMa+Yfwk4rS0NOzt7bl69SopKSnUr1/f6EglkilXONwA2iqlMjVNswZ2apoWC3igz72eqWnaWPS512NMmEMIIYpWbi54e8PXX+tzpVu3/v+XcnJz6BHRgz+v/MnOfjupXrH0LcsbMWIEJ06cICUlhSp/22IihBBCiBLk22/1ZtllysD27dC48R0PnbVzFjO/nsmgFwcx034meavODHPhwgUcHR1JS0sjMTGRF154wdA8JZnJejgoXWbel9Z5/yhk7rUQorgbORIiImDOHOja9R8vTdo+iYTjCXze4XNa1m5pUEDjREZGEhgYyNixY2l1h/2bQgghhCjm9u6FN9+E8uXhq6/uWmxYuG8hY5PG0v357izssNDwYsOVK1fo2LEjR48eJTIykldeMX4cZ0lm0qaRmqZZaZr2DXrn5wSl1F5k7rUQojibOxfmzYPhw8HP7x8vRR+NZtpX0+jXrB/9W/Q3KKBx0tLSGDBgAC1atGDSpElGxxFCCCGEKezYAfb2esPsr76CBg3ueOiqb1YxNHYors+6sqrzKsO3md64cQN3d3f27t3LunXrsLe3NzRPaWDSgoNSKkcp1QywBf6jadrz93HuUqVUS6VUy5o1a5oupBBCFFRoqF5k8PTUVzf8zS/nf8Fnow/NH2/O5x0+NyigcZRS9OvXj8zMTIKDgylXrpzRkYQQQghR1LZu1RtmP/GEXnh48sk7HhpxKIJ+Uf1o91Q7QjxDsLayNmPQ22VnZ9OzZ08SEhIIDAzEw8PD0DylhVnGYiqlLgLbAWfy5l4DyNxrIUSxsWMH+PjAG2/A6tX6fsU8V7Ou0iW0C2W0MkR0jaCCdQUDgxpj8eLFxMbG8sknn9CwYUOj4wghhBCiqEVG6g2zn30WUlL+MZ3r3+J+jqN7RHdesX2FTW9vonzZ8mYMejulFIMGDSIiIoK5c+fSp08fQ/OUJiYrOGiaVlPTtIfzPq8A2ANHkLnXQoji5tAhcHODevVg0yZ9v2IepRTvbHmH79K/Y43HGp565CkDgxrj6NGjjBw5EkdHR4YMGWJ0HCGEEEIUtbVr9RWeLVro0yjusgJ9x6kduIe48/yjz7OlxxYqlatkxqC3U0rxwQcfEBQUxIQJExg+fLiheUobU06pqAWs0jTNCr2wEaqU2qxp2m5k7rUQorg4fRrat9eLDLGxUK3aP15ecmAJX377JRPbTKR9g/YGhTROVlYW3t7eVKhQgRUrVlCmjFkWzgkhhBDCXJYvh4EDoU0biIqCypXveOj+P/bTaW0n6j5cl63eW3m4/MNmDJq/6dOnM2fOHIYNGyY9pgxgsoKDUuo7oHk+35e510KI4iEjAzp2hL/+0rdU1K37j5f3/bGP9+Pep/3T7ZnQZoIxGQ02depUUlNTCQsLo/ZdllYKIYQQohiaP19vlN2+vT6hq8Kdt43+8OcPOK9xpkbFGiT6JFKzkvF9+BYuXMj48ePx8fFh3rx5hk/IKI3krSghhMjPzZvQpQt8/z2Eh+tLCP/m7JWzeIZ6UrtybYI9gimjlb6/Tnft2oW/vz+9e/fG09PT6DhCCCGEKErTp+vFBg8P2LjxrsWGn/76Cfsv7SlftjxJvZKoU6WOGYPmb82aNQwdOhRXV1cCAwNlFaZBTLmlQgghiqfcXOjbFxISIChI78b8Nzm5OfTY0IM/r/zJLt9dVKtQ7Q4XKrkyMjLw8fHBzs6OgIAAo+MIIYQQoqgoBR99BDNmgLc3rFgBZe/8Y+Ovl37FfrU9OSqHZJ9ki+hnFR0dTe/evXnrrbcICQnB2trYCRmlmRQchBDi75SCUaP05kjTp+uFh3+ZkDyBxOOJBLoG0qJWi3wuUvKNGDGCEydOkJKSQpUqVYyOI4QQQoiioJS+qiEgQO/bsGjRPyZz/VtaZhr2X9pz6folknsn07Cm8ZOqtm/fjpeXFy1atGDTpk2UL2/shIzSTgoOQgjxd7Nnw9y58N57MHbsbS9HHY1i+s7p9G/en37N+xkQ0HiRkZEEBgYyduxYWrVqZXQcIYQQQhSFnBwYPFhvEjl8OHz2Gdyl58H5a+dxXO3IHxl/kOCTQPNat7XvM7vU1FRcXFyoX78+sbGxVL5Lg0thHrKRRQghbvnySxg9Grp104sO/7rJ/nz+Z3pt7MWLtV5kQYcFBoU0VlpaGgMGDKB58+ZMnjzZ6DhCCCGEKApZWdCrl15s+PjjexYbMm5k0H5Ne47+dZRNb2/itSdeM2PY/B06dAhnZ2dq1KhBfHw81atXNzqSQFY4CCGELjYW+vWDdu1g1arblg9ezbpKl9AuWJWxIrxrOOXLlr7leUopfH19yczMJDg4mHLlyhkdSQghhBAP6sYN/c2WTZtg5kwYM+auh1/NuorLOhcOnD7Ahm4bsK9nb6agd3by5EkcHR2xtrYmMTGROnWMb1opdFJwEEKIvXvB0xOaNIENG8DG5h8vK6UYvHkw36d/T0zPGOo+XNeYnAZbvHgxMTExBAQE0KhRI6PjCCGEEOJBXb0K7u4QHw8LFsDQoXc9/GbOTTxDPdlxagdrPNbg+qyrmYLeWVpaGg4ODly5coUdO3ZQv359oyOJv5GCgxCidDt6FDp2hFq19FUO+TRAXJy6mNXfrWbym5Nxfto5n4uUfEePHmXkyJE4OjoyZMgQo+MIIYQQ4kFdvgwuLrBzpz6VK59G2X+XnZtNzw09if05lqWdltL9he5mCnpnFy5cwMnJidOnT5OYmMgLL7xgdCTxL1JwEEKUXn/8AY6OYGUFW7fCY4/ddsie3/fwftz7dGjQgfGtxxsQ0nhZWVl4e3tToUIFVqxYIXOshRBCiOLu3Dlo3x7++199Mle3bnc9PFflMiB6AOGHwvnM8TMGvDjATEHv7MqVK3Ts2JEjR46wefNmXn31VaMjiXxIwUEIUTpdvAjOznD+PKSkQD7L785eOYtXmBe2VWxZ7b6aMlrp/EF76tSppKamEhYWRu3atY2OI4QQQogHcesNl19+gY0b9VUOd6GU4v3Y91n5zUomtZnEiFdHmCnond24cQMPDw/27t1LWFgYDg4ORkcSdyAFByFE6XPtGri66tspYmKgRYvbDsnJzaF7RHfOXT3Hrn67qFahmgFBjbd79278/f3p1asXnp6eRscRQgghxIM4fhzs7eHsWYiLgzffvOcp47eN5/P9nzPy1ZFMaDPB9BnvIScnB29vb+Lj4wkKCsLDw8PoSOIupOAghChdcnKgZ099v+K6dfpNNx8fJ39M0okkglyDLGKutBEyMjLw9vbGzs6OBQtK5xhQIYQQosT44Qd9ZcONG7BtG7z00j1PmblzJtN3Tmdgi4F86vAp2l1GZZqDUopBgwYRHh7OZ599Rt979J0QxpOCgxCi9FAK3n1XXz44f/4d9ytuOrKJGTtnMKDFAPo2L703shEjRnDixAlSUlKokk8zTSGEEEIUE/v26T0bbGxgxw5o3Piep3y+73PGJY2jxws9+KLjFxZRbPjggw8IDAzk448/ZsQI47d2iHsrnRuShRCl0+TJsHQpjBsH772X7yFHzx3FZ6MPLWu3JKB9gJkDWo7IyEgCAwMZM2YMrVq1MjqOEEIIIQorORnatYOHH9ZXeBag2LDqm1UMix2G27NurHRbiVUZKzMEvbvp06czZ84chg0bxuTJk42OIwpICg5CiNIhIEAvOPTtC/7++R6ScSMD9xB3bMraENE1gvJly5s5pGVIS0tjwIABNG/eXG7oQgghRHEWFaWvbHjySfjqK6hX756nhB8Kp19UP+zr2bPecz3WVtZmCHp3CxcuZPz48fj4+DBv3jzDV1uIgpOCgxCi5AsOhvffh86d9RUO+dyklFL03dSXo38dJcQzBLuqdgYENZ5SCl9fXzIzMwkODqZcuXJGRxJCCCFEYaxZAx4e0KSJPpGrAJOmYn+KpUdED16xfYXIbpEW8ebLmjVrGDp0KK6urgQGBsp47mJG/msJIUq26Gjo0wfattWbRJbNv3XNp7s+JeJwBJ/Yf0Lbp9qaN6MFWbJkCTExMcyaNYtGjRoZHUcIIYQQhfHFF+DjA61bQ1ISVK9+z1NSTqbgEerB848+z5YeW6hUrpIZgt7d5s2b6d27N2+++SYhISFYWxu/2kLcnwIXHDRNe1LTNPu8zytomlbZdLGEEKII7NgBXbvqYy8jI6F8/lX6hF8SGJc0jq6Nu+L3qp+ZQ1qOo0eP4ufnh6OjI0OHDjU6jhD5kucRIYS4hxkzYMgQ6NRJH/9d+d5/Te77Yx+d1nXiqYefYqv3Vh4u/7AZgt5dSkoKXl5eNG/enKioKMrf4TlOWLYCFRw0TRsAhANL8r5lC0SaKpQQQjywgwfBxQWeeuquN9uTF0/SPaI7jWo2ItA1sNTuCczKysLb25sKFSqwYsUKWa4oLJI8jwghxF0oBWPHwocf6iPAIyLu+GbL332b9i3Owc7UrFiTBJ8EalaqaYawd5eamoqLiwv16tUjNjaWygUomgjLVNAnyiHA68BlAKXUT8CjpgolhBAP5NgxcHbWuzHHx0ONGvkedi3rGl1Cu5Cdm82Grht4qNxDZg5qOaZOnUpqaipLliyhdgH2eAphEHkeEUKI/OTkwDvvwKxZ+gjwL7+EAmw/OHz2MA6rHahUrhJJvZKoU6WOGcLeI9Phwzg7O1O9enXi4+OpcYfnOFE85L+Z+XY3lFI3b73zp2laWUCZLJUQQhTWb7+Bg4PeGDIhAWxt8z1MKcU7W97h4JmDRHePpkH1BmYOajl2796Nv78/vXr1wtPT0+g4QtyNPI8IIcS/ZWVBr16wfr2+umHatHwbZP/bz+d/pt2X7SijlSGpVxJPPfKUGcLe3cmTJ3FwcKBs2bIkJCRQp47xBRDxYApacEjRNO1DoIKmaQ7Au0C06WIJIUQhnDsHjo5w8SJs3w7PPHPHQxelLmLVt6uY1GYSnZ7pZL6MFiYzMxMfHx+eeOIJAgICjI4jxL3I84gQQvzdtWvg5QVbtuirG0aPLtBpv176lXZftuNmzk2299nOM9Xv/MxkLmlpaTg4OHDlyhVSUlJ4+umnjY4kikBBCw5jAV/ge2AQEAMsN1UoIYS4b5cv63OmT57Ut1E0b37HQ3f9tov3496n0zOd+LjNx+bLaIFGjBjB8ePHSUlJoWrVqkbHEeJe5HlECCFuuXQJ3Nz0JtlLlsDAgQU67UzGGdp92Y5L1y+xrfc2nn/0eRMHvbcLFy7g5OTE6dOnSUxMpEmTJkZHEkWkoAWHCkCQUmoZgKZpVnnfu2qqYEIIUWDXr0PnzvDNN/o0ilat7njomYwzdAntQt2H67LafTVltNLbHDEyMpLly5czduxYWt3l90wIC1Ko55G841KBP5RSnTRNqwaEAHWBk0BXpdQFE+YWQoie1GofAAAgAElEQVSilZ6u96v64QdYuxbefrtAp529chb71fakZaaR4JNAi1otTBz03q5cuULHjh05cuQImzdv5tVXXzU6kihCBX3STkK/od9SAUgs+jhCCHGfsrP1m2xyMqxcCR073vHQmzk38Qrz4vKNy2zsttEiRj4ZJS0tjQEDBtC8eXMmT55sdBwhCqqwzyPvA4f/9vVYIEkp1SDvmmOLLKEQQpjaiRPwxht6k+zNmwtcbLhw7QKOwY4cv3Cczd0384rtKyYOem83btzAw8ODvXv3sm7dOhwcHIyOJIpYQQsO5ZVSmbe+yPu8omkiCSFEAeXmwoABsGkTLFigj4C6C7+tfnz929cEuQZZxPJBoyil8PX1JTMzk+DgYMqVK2d0JCEK6r6fRzRNswU68s+tF27AqrzPVwGdizinEEKYxnffwWuvwfnzkJQETk4FOu3yjcs4r3Hm0NlDRHaLpE3dNiYOem85OTl4e3sTHx/PsmXL8PDwMDqSMIGCFhyuaJr2/+ttNE17EbhmmkhCCFEASsGIEfqqhsmTYejQux6+6ptVLNy/kJGvjqTb893Mk9FCLVmyhJiYGGbNmkWjRo2MjiPE/SjM88g8YDSQ+7fvPaaUOgOQ91FGawohLN/OndC6NVhZwVdfwSsFW6FwNesqndZ24sDpA4R6huL0dMGKFKaklGLQoEGEh4czZ84c+vXrZ3QkYSIF7eEwHAjTNO103te1gNL9xC6EMNb48RAQAH5+8PHdGz8ePHOQwVsG81bdt5hpP9NMAS3TsWPHGDlyJA4ODgy9R5FGCAt0X88jmqZ1Av5USh3QNO3NwvyCmqYNBAYC2NnZFeYSQgjx4DZv1qdR2NnpzbGffLJAp13Pvk7n9Z35+revWeuxFrfn3Ewc9N6UUowePZrAwEDGjx+Pn5+f0ZGECRWo4KCU2q9p2nPAs4AGHFFKZZk0mRBC3MmMGTB9OgwaBLNn33XW9Lmr5/AI8aBmxZqEeIZQtkxB66wlT1ZWFt7e3tjY2LBixQrKlCm9DTNF8VSI55HXAVdN0zoA5YEqmqYFA+maptVSSp3RNK0W8Oddfs2lwFKAli1bqqL6dxFCiAL78kvo10+fwBUTAzVrFui0rJwsuoZ1JeF4AivcVljMCs8ZM2Ywe/Zshg4dypQpU4yOI0zsrk/emqa1VUpt0zTt3xtqGmiahlJqgwmzCSHE7RYsgA8/BG9v+OKLuxYbcnJz6B7RnbTMNHb220nNSgW7QZdUU6dOZf/+/YSFhVGnTh2j4whRYIV9HlFKjQPG5V3jTWCUUspb07RPgd7AzLyPm0yXXgghHsBnn8HIkdCuHWzcCJUrF+i07Nxsem7oSfSxaL7o8AV9mvUxbc4CWrRoER999BHe3t7Mnz8f7S7PcaJkuNdbfW2AbYBLPq8pQAoOQgjzCQqC994Dd3dYsQLu8Q79+G3jSTyeSKBrIC1rtzRTSMu0e/du/P396dWrF56enkbHEeJ+FfXzyEwgVNM0X+BXwOvB4gkhRBFTSn+DZeZM8PSE4GCwsSnQqbkqF98oX8IOhTHbYTbvvPSOicMWzNq1axkyZAguLi4EBQXJSstSQlPq7qsDNU0rA3gqpULNE+l2LVu2VKmpqUb98kIIS7B+PfToAY6O+lSKe9x0Iw5F4BnmyaAXB7G402IzhbRMmZmZNGvWjOzsbL799luqVq1qdCRRRDRNO6CUKhXVNHkeEUKUGtnZMHgwBAbq20cXLtQbRRaAUop3trzDkgNLmPLmFD5uc/c+V+ayefNmOnfuTKtWrYiNjaV8+fJGRxJF6G7PI/csKymlcgHpLCaEME50NPj4QKtWsGHDPYsNh84eos+mPrxi+wrzneebKaTlGjFiBMePH2f16tVSbBDFljyPCCFKhevX9eaQgYF6U+xFi+6r2OC31Y8lB5Yw9vWxjG893sRhCyYlJQUvLy+aN29OVFSUFBtKmYJ2T0vQNG0UEAJcufVNpdR5k6QSQohbEhP1G2/z5nrhoWLFux5+6fol3EPcqWRdiXCvcGzKFmz5YUkVFRXF8uXLGTNmDK1atTI6jhAPSp5HhBAl1+XL4OYG27fD/Pn6NtL78HHyx8zbO4/3/vMe09tNt4j+CKmpqbi4uFCvXj1iY2OpXMAeFKLkKGjBoR/6Hsl3//X9ekUbRwgh/ubrr/Ub7zPPQFwcVKly18NzVS69Invxy/lf2NZ7G3WqlO7GiGlpafj6+tKsWTPpAi1KCnkeEUKUTOnp0L49fP89rFmjbyO9D9O/mo7/V/4MaDGAec7zLKLYcPjwYZydnalWrRrx8fHUqFHD6EjCAAUtODRCv7m/gX6j/woo3ZuihRCmdeAAdOgAtraQkADVqt3zlCkpU4g6GsWC9gto/WRrM4S0XEopfH19yczMZM2aNZQrV87oSEIUBXkeEUKUPCdO6D2q/vgDoqL0wsN9mLt7Lh9t+wjvJt4s6rjIIooNp06dwtHRkbJly5KYmCjTsUqxghYcVgGXgYC8r7vnfa+rKUIJIUq5H38EJyd45BF9S8Vjj93zlMgjkUxOmUzfZn0Z8tIQM4S0bEuWLCEmJob58+fTqFEjo+MIUVTkeUQIUbJ8841eYLhxA5KS4NVX7+v0z/d9jl+8H56NPFnhtgKrMgXr92BK6enp2Nvbk5mZSUpKCk8//bTRkYSBClpweFYp1fRvXydrmvatKQIJIUq5n38Ge3soV06/8T7xxD1POXT2ED4bffhPnf/wRccvLKKyb6Rjx44xcuRIHBwcGDpUeuyJEkWeR4QQJce2bdC5M1Stqr/B0rjxfZ2+JHUJw2KH0fm5zqz1WEvZMgX90c50Ll68iJOTE6dPnyYxMZEmTZoYHUkYrKDDT/+radort77QNO1l4GvTRBJClFrHj8Nbb+njoBIToX79e55y8fpF3Na7Ucm6Ehu6bqB82dLd+TgrKwtvb29sbGxYsWKFzLgWJY08jwghSob168HZGezsYPfu+y42BB4MZPCWwXRs0JEQzxCsraxNFLTgrly5QseOHTl06BCRkZG8ep+rNUTJVNAy2MtAL03Tfs372g44rGna94BSSknpSgjxYE6dgrZt4epVveJfgG0AObk59IjowamLp0junVzqm0QCTJs2jf379xMaGir7JUVJJM8jQojib948GDFCH/e9aZO+hfQ+rPpmFQOiB+BU34nwruGUszK+T9PNmzfp0qULe/bsITQ0FAcHB6MjCQtR0IKDs0lTCCFKt99/14sNly7p2yiaNr33Oejjn2J/jmVxx8W8bve6iUNavt27d+Pv74+Pjw9eXl5GxxHCFOR5RAhRfOXmwpgxMHs2eHjo0yjK39/KzLXfr6Xvpr60q9eOjd02WsTKzpycHLy9vdm6dSuBgYF06dLF6EjCghSo4KCUOmXqIEKIUur0aX0bxblz+jaKFi0KdFroj6HM2DmDgS0GMqjlIBOHtHyZmZn4+Phga2vLggULjI4jhEnI84gQoti6eRP69dOLDO++CwEBYHV/DR7DfgzDZ6MPbeq2YdPbm6hgXcFEYQtOKcWgQYMICwtjzpw59OvXz+hIwsIY31lECFF6pafrKxvS0iA+Hl56qUCnfZf+HX039eW1J14joH3AvU8oBUaMGMHx48dJSUmhatWqRscRQgghxC0ZGdCliz7m298fxo2D+2xwvfHwRrpHdOe1J14juns0Fa0rmihswSmlGD16NIGBgYwfPx4/Pz+jIwkLJAUHIYQxzp7Viw2//QZxcQUeA/XX1b/ovL4zD5d/mHCvcGzK2pg4qOWLiopi+fLljBkzhlatWhkdRwghhBC3pKdDhw7w7bcQFAR9+973JaKPRtMtvBsv1XmJmB4xPFTuIRMEvX8zZsxg9uzZDBkyhClTphgdR1goKTgIIczvr7/00ZcnTkBMjN40qQCyc7PpHtGdPzL+YEefHdSqXMvEQS1feno6/fv3p1mzZnKzF0IIISzJTz/pkyjS0iAqSi883KfYn2LxDPOk2ePNiOsZR2WbyiYIev8WLVrERx99RM+ePQkICCj1I8nFnUnBQQhhXhcugIMDHDsG0dHw5psFPnVc4jgSjicQ5BrEy7Yvmy5jMaGUwtfXl8uXL5OcnEy5csZ3qRZCCCEEsH8/dOyoN4rctg1evv/nlvhf4nEPcadxzcZs9d5K1fKWsWVy3bp1DBkyBBcXFxnBLe5J/u8QQpjPpUvg6Ag//giRkfoqhwJa+/1aZu+ezdCXhtK3+f0vRyyJli5dypYtW5g1axaN73N+txBCCCFMJC5Of0OlUiXYtatQxYZtJ7bhtt6NZ2s8S4JPAo9UuL/RmaayZcsWevXqRevWrQkJCcHa2troSMLCScFBCGEely/rywq//RYiIsDJqcCnHjxzEN8oX1o/2ZrPnD4zYcji49ixY/j5+eHg4MCwYcOMjiOEEEIIgFWrwMUFnnkGdu/WP96nHad24LLOhfqP1CfRJ5HqFaubIOj9S0lJwdPTk2bNmhEVFUWFCsZPyRCWTwoOQgjTy8zUlxWmpkJoKHTqVOBTz145i3uIOzUr1iTMKwxrK6mkZ2Vl4e3tjY2NjSxlFEIIISyBUjBjBvTpA23aQEoKPP74fV9mx6kddFjTAbuqdiT1SqJmpZpFn7UQDhw4gIuLC0899RSxsbFUqVLF6EiimJAeDkII08rI0Jsk7d4N69dD584FPjUrJ4uu4V3588qf7Oy7k0crPWrCoMXHtGnT2L9/P6GhodSpU8foOEIIIUTplp0NQ4bA0qXQowesWAGF6Kt0q9hgW8WWbb228dhDj5kg7P07cuQIzs7OVKtWjfj4eGrUqGF0JFGMyNtiQgjTubWN4laxwdPzvk4fFT+K7Se3s7TTUl6s/aKJQhYve/bswd/fHx8fH7y8vIyOI4QQQpRumZng5qYXGz78EFavLlSxIeVkCu3XtOeJqk+wvc92i5nEderUKRwcHLCysiIxMRFbW1ujI4liRlY4CCFM49IlvdiQmgohIdCly32dvvKblQTsC2DEKyPwaepjopDFS2ZmJt7e3tja2rJgwQKj4wghhBCl25kz+jbRb7+FJUtg4MBCXWb7ye10XNuRJ6s+ybbe23j8ofvfimEK6enp2Nvbk5mZSUpKCk8//bTRkUQxJAUHIUTRu3RJbwp54IDes8Hd/b5O3//HfgZvHkzbp9ryicMnJgpZ/Pj5+XH8+HG2b99O1aqWMRpLCCGEKJUOHdK3jJ47B1FR+ueFkHwimY5rO/LUI09Z1DaKixcv4uTkxOnTp0lISKBJkyZGRxLFlBQchBBF6+JFvdjw3/9CeLi+zPA+nMk4g3uIO48/9DghniGULSN/TQFERUWxbNkyxowZQ+vWrY2OI4QQQpReKSl6T6ry5fXPXyzcts9tJ7bRaW0n6j1Sj6ReSRZTbLhy5QodO3bk0KFDREdH89prrxkdSRRj0sNBCFF0LlwAB4dCFxuuZ1/HPcSdi9cvEtU9ihoVpSkR6Esa+/fvT7NmzZgyZYrRcYQQQojSa+1acHSEWrX0HlWFLDYkHU+i49qO1K9Wn229LWdlw82bN+nSpQt79uxh7dq1ON3HGHMh8iNvHQohisatYsP338OGDfc1+hJAKcXgzYPZ+8deIrpG0OQxWboH+u+Lr68vly9fJjk5mXKFaEQlhBBCiAekFMyaBePG6WMvN26ERx4p1KUSjyfiss6FBtUaWNToy5ycHLy9vdm6dSvLly/H8z6bfQuRH5OtcNA07QlN05I1TTusadqPmqa9n/f9apqmJWia9lPex8L9SRVCWI7z58HeXi82bNx438UGgLl75rLq21VMajMJj4YeJghZPC1dupQtW7Ywa9YsGjdubHQcIYQQovTJzoZ33tGLDd27w9athS42xP8Sb5HFBqUUgwcPJiwsjNmzZ+Pr62t0JFFCmHJLRTYwUinVEHgFGKJpWiNgLJCklGoAJOV9LYQorv76C9q1gx9/hE2bCtU0aevPW/kg4QO6NOzCx20+NkHI4unYsWP4+flhb2/PsGHDjI4jhBBClD63xl4uWaIXHIKDwcamUJeK+zkOt/VuPFP9Gbb13mZRxYYxY8awfPlyPvroI0aOHGl0JFGCmKzgoJQ6o5Q6mPd5BnAYqAO4AavyDlsFdDZVBiGEiZ07pxcbDh/Wiw3Ozvd9iWN/HaNbeDdeePQFVnVeRRlNWssAZGVl4e3tjY2NDStXrqRMGfl9EUIIIcwqLU3fPhEXB4sXw/TpUMj7ceSRSFzXufJcjedI6pVkUX2qZs6cyaeffsqQIUOYOnWq0XFECWOWHg6aptUFmgN7gceUUmdAL0pomvboHc4ZCAwEsLOzM0dMIcT9SEvTt1H88os+DsrR8b4vcfH6RVzXuWJtZc2mtzdRqVwlEwQtnqZNm8b+/fsJDQ2lTp06RscRQgghSpdbYy/PntWfczp2LPSl1n2/Dp+NPrSs3ZLYnrE8UsFydpQvWrSIDz/8kJ49exIQEICmaUZHEiWMyd8y0zTtISACGK6UulzQ85RSS5VSLZVSLWvWtIzlRkKIPL/9Bq1bw8mTsGVLoYoNObk5dI/ozi8XfiGiawRPPvxk0ecspvbs2YO/vz8+Pj54eXkZHUcIIYQoXZKS4LXX4Pp1fezlAxQbgv4bRM8NPXnD7g0SfBIsqtiwbt06hgwZgouLCytWrJDVlMIkTPp/laZp1ujFhjVKqQ15307XNK1W3uu1gD9NmUEIUcROnNCLDenpetOktm0LdZmxiWOJ+zmOhR0W0vrJ1kUcsvjKzMzE29sbW1tbFixYYHQcIYQQonRZtkzfImprC3v3QsuWhb7Uwn0L8Y3yxaG+AzE9Y6hsU7kIgz6YLVu20KtXL1q3bk1ISAjW1tZGRxIllCmnVGhAIHBYKfXZ316KAnrnfd4b2GSqDEKIInbsGLRqBZcu6dX/118v1GVWf7ua2btnM+SlIQx8cWARhyze/Pz8OH78OF9++SVVq1Y1Oo4QQghROuTmwujRMHCg3p/q66/hycKvvvz0608ZGjsU12ddiXo7iorWFYsw7INJSUnB09OTpk2bEhUVRYUKFYyOJEowU/ZweB3wAb7XNO2bvO99CMwEQjVN8wV+BWS9sBDFwQ8/6D0bcnNh+3Zo0qRQl9n7+14GRA/grbpvMddpbtFmLOaioqJYtmwZo0ePpnVrWfUhhBBCmMXVq+DtrY/2fucdCAiAsoX7MUkpxZSUKUxKmUS3xt1Y7b4aayvLWT1w8OBBXFxcqFu3LnFxcVSpUsXoSKKEM1nBQSm1E7hT15F2pvp1hRAmcPCg3qfBxkYvNjz3XKEu88flP3APcad25dqEeoVa1A3YaOnp6fTv359mzZoxZcoUo+MIUWJomlYe2AHYoD/3hCulJmqaVg0IAeoCJ4GuSqkLRuUUQhjkzBlwdYUDB2DuXHj/fShk40SlFB8kfMCc3XPo06wPy12WY1XGqogDF96RI0dwcnKiWrVqJCQkUKOG5UzKECWXWaZUCCGKsT179L2MDz+sb6OoX79Ql7mWdQ33EHcybmYQ7xNvUeOgjKaUwtfXl8uXL5OcnIxNIed7CyHydQNoq5TKzOsttVPTtFjAA0hSSs3UNG0sMBYYY2RQIYSZffcddOoE58/r471dXAp9qezcbPpH9WfVt6sY8tIQAtoHWNSo71OnTuHg4ICVlRUJCQnY2toaHUmUEpbzp0AIYXlSUsDBAWrWhB07Cl1sUEoxIHoA+0/vJ9g9mOcffb6IgxZvS5cuZcuWLcyaNYvGjRsbHUeIEkXpMvO+tM77RwFuwKq8768COhsQTwhhlJgYvRdVbi589dUDFRuuZV3DI8SDVd+uYvKbk1nQfoFFFRvS09NxcHAgMzOTrVu30qBBA6MjiVLEcv4kCCEsS3w8tG8PdnZ6scHOrtCXmr1rNmu+X8PUt6bi9pxbEYYs/o4dO4afnx/29vYMGzbM6DhClEiaplnl9ZP6E0hQSu0FHlNKnQHI+/joHc4dqGlaqqZpqWfPnjVfaCGE6Xz+uV5gaNBAn0TRvHmhL3Xx+kWcgp3YfGwzX3T4ggltJqAVckuGKVy8eBEnJyf++OMPtmzZQtOmTY2OJEoZKTgIIW4XFaXfiJ95Ru/ZUKtWoS8V81MMYxLH4NXIi49afVR0GUuArKwsfHx8sLGxYeXKlTL/WggTUUrlKKWaAbbAfzRNK/AyK6XUUqVUS6VUy5o1a5oupBDC9HJy4L33YNgwfSvFjh1Qp06hL3cm4wxtVrZhz+97WO+5nndeeqcIwz64q1ev0qlTJw4dOsSGDRt47bXXjI4kSiHp4SCE+Kcvv4R+/eDFFyEuDh55pNCXOnz2MN0jutPs8WascFthURV/S+Dv78++ffsICQmhzgM88AghCkYpdVHTtO2AM5CuaVotpdQZTdNqoa9+EEKUVBkZ0L07bNkCfn7wySdgVfiGjt+lf0entZ04f+08W3pswaG+QxGGfXA3b96kS5cu7N69m5CQEJycnIyOJEopeTtNCPE/AQHQuze8+abeIPIBig3nr53Hdb0r5cuWJ/LtSCqVq1R0OUuAPXv2MG3aNHx8fOjatavRcYQosTRNq6lp2sN5n1cA7IEjQBTQO++w3sAmYxIKIUzu1Cl44w39jZRFi2DOnAcqNmw5toXXg14nV+XyVd+vLK7YkJOTg7e3N3FxcSxduhRPT0+jI4lSTFY4CCFAKZgyBSZNAnd3WLdOH4FZSFk5WXiGevLrpV/Z1msbdlUL3/+hJMrMzMTb2xtbW1sWLFhgdBwhSrpawCpN06zQ32gJVUpt1jRtNxCqaZov8CvgZWRIIYSJ7NqlP9tcv66vbniAd/qVUszbM49RCaNo/nhzorpHUbty7SIM++CUUgwePJiwsDA+/fRTfH19jY4kSjkpOAhR2uXmwogR+uqGPn1g2TIoW/i/GpRSDI0ZSvLJZL7s/CWv271edFlLCD8/P44fP8727dupWrWq0XGEKNGUUt8Bt3WEU0r9BbQzfyIhhNmsWgUDB+qNr1NS4LnnCn2pG9k3GBY7jGUHl+HR0IPV7qupaF2xCMM+OKUUY8aMYfny5Xz44YeMGjXK6EhCyJYKIUq17Gzo21cvNowYAYGBD1RsAAjYG8DSg0sZ98Y4fJr6FFHQkiMqKoply5bxwQcf0Lp1a6PjCCGEECVPTg6MHq2/kdKqlT6J4gGKDb9d+o3WK1uz7OAyxr0xjjCvMIsrNgDMmjWLTz/9lHfffZdp06YZHUcIQFY4CFF6Xb8O3brpEymmToWPPoIHbOoY+1MsfvF+dH6uM9Payo3u39LT0+nfvz9NmzZlypQpRscRQgghSp7Ll6FHD337xLvvwrx5YG1d6MttO7GNt8Pf5lr2NSK6RuDR0KMIwxadxYsXM27cOHr06MGCBQukUbewGFJwEKI0ysgANzdIToYFC2Do0Ae+5I9//ki38G40eawJq91XU0aTBVR/p5Sif//+XL58meTkZGweoEeGEEIIIfJx/Di4usKRI7BwoV5wKCSlFLN3zWZs0lierf4sG7pt4LkahV8lYUrr1q3j3XffpVOnTjJmW1gcKTgIUdqcOwft28N//wvBwdCz54Nf8uo5XNa5UNG6IlFvR/FQuYeKIGjJsnTpUjZv3sy8efNo3Lix0XGEEEKIkiUlBbp00XtTxcdD27aFvlTGjQz6bupLxOEIPBt5EuQaRGWbykUYtuhs2bKFXr160bp1a0JDQ7F+gNUcQpiCFByEKE1+/x0cHeHECdi4EVxcHviSN3Nu4hHiwemM06T0SeGJqk8UQdCS5dixY/j5+WFvb8+wYcOMjiOEEEKULMuW6asZnn4aoqP1j4X0Tdo3dA3ryi8XfuFTh08Z+epIi92esGPHDjw9PWnatClRUVFUqFDB6EhC3EYKDkKUFocO6aOgLl2C2Fh4880HvqRSisGbB/PVr1+x1mMtL9u+/OA5S5isrCx8fHywsbGRZY5CCCFEUcrOhpEj9ebXTk6wfj08/HChLqWUYuH+hYyMH0mNijXY1msbbeq2KeLARefgwYO4uLhQt25d4uLiqFKlitGRhMiXFByEKA2+/lpfzWBjAzt2QLNmRXLZz3Z/xopvVjCh9QS6v9C9SK5Z0vj7+7Nv3z5CQkKoU6eO0XGEEEKIkuHiRb35dXy8Pmnrk08KPWnrwrUL+Eb5svHIRjo06MBKt5XUrFSziAMXnSNHjuDk5MQjjzxCQkICNWrUMDqSEHckBQchSrqoKP2G/MQTsHUrPPVUkVw2+mg0HyR8gFcjLya+ObFIrlnS7N27l2nTpuHt7U3Xrl2NjiOEEEKUDEeO6M2vT5yA5cvB17fQl9r12y66R3TnTMYZ5jjOYfgrwy268fWpU6dwcHCgTJkyJCQkYGtra3QkIe7Kcv80CSEe3LJl4O4OTZroqxyKqNjwXfp39NjQgxa1WrCy80qLvjEbJTMzE29vb+rUqcPnn39udBwhhBCiZIiOhv/8R1/hkJRU6GJDrspl5s6ZtF7RGivNiq/7fY3fq34W/UyTnp6Og4MDGRkZxMfH06BBA6MjCXFPssJBiJJIKZg6FSZO1CdShIVBpUpFcun0zHRc1rlQxaYKm97eREXrikVy3ZLGz8+PX375heTkZKpWrWp0HCGEEKJ4y80Ff3+YMAFefFFvfv1E4RpV/3rpV3pH9mb7ye10bdyVpZ2WUrW8Zd+rL168iLOzM7///jsJCQk0bdrU6EhCFIgUHIQoaXJyYOhQWLwYevfWVzkU0Yik69nX8Qj14OyVs+zou4M6VaQnQX6ioqJYtmwZo0ePpk0by204JYQQQhQLGRn6M83GjeDjA0uWQCEmMiilWPv9WobEDCFH5RDoGkjfZn0tdgrFLVevXsXFxYUff/yR6OhoXn/9daMjCVFgUnAQoiS5dg169tRvyOPG6e8EFNFNVCnFwOiB7PptF6GeoWIdQ28AACAASURBVLSs3bJIrlvSpKen079/f5o2bcqUKVOMjiOEEEIUbz//rPdrOHoU5s2D994r1LPN+WvneWfLO4T+GMrrT7zOl+5fUu+ReiYIXLRu3rxJly5d2LVrF+vXr8fJycnoSELcFyk4CFFSXLig35B37tTHQw0bVqSXn7lzJqu/W82UN6fg1dirSK9dUiil6N+/P5cvXyY5ORkbGxujIwkhhBDF19at8PbbYGWlf96uXaEuk/BLAn029eHPK3/i39afMa+PwaqMVRGHLXo5OTn4+PgQFxfHsmXL8PKS5y9R/EjBQYiS4NQp6NBBfxdg/Xoo4okIoT+G8uG2D+nxQg/Gtx5fpNcuSZYtW8bmzZuZO3cujRs3NjqOEEIIUTwpBZ9+qq/W/D/27jw+puv/4/jrhIhdqKVCLK2lRaRardZWRAhVVO0SWjtVS0NtXS0V2mr7LX7E0ogSe0uEECFqqail1hZRJJaKNUiQ7fz+uGnr2y+tMDN3ZvJ5Ph55ZHJnMvftNM09+dyz1KgB33//UAtf30q7xaiNo/jPrv/wdPGnCe8SzrOln7VCYMvTWjNgwACWLl3Kp59+Su/evc2OJMRDkYKDEI5u925o1Qru3DGq/40aWfTtd57ZSffvulPPsx5zW8+1+3mOZjl+/DjDhg3Dx8eHwYMHmx1HCCGEcEzJycbOE0uWGDdQ5s17qIWvdyTsoOeqnhy9fJS3X3ibyU0nk881++s+mGXUqFHMnj2bMWPGMHz4cLPjCPHQ7HffFyHEvwsPh5dfNhZO2rHD4sWGk1dP0jqsNWULl+X7zt+TN3dei76/s0hLS8Pf3x83NzdCQkJwcZFfrUIIIUS2nToF9erB0qUQFGSM2sxmsSElLYV31r9D/Xn1uZV+iw3+G/hPi/84VLEhKCiIKVOmMHDgQCZMmGB2HCEeiYxwEMJRTZ9uLJz07LOwZg2UKmXRt792+xqvLHqF9Mx0IrpGUDx/cYu+vzOZOHEiu3btYsmSJZQtW9bsOEIIIYTj2bABunY1dttauxb8/LL9FltPb6Xn6p7EXYljQO0BTG46mUJuhawQ1npmzpzJ6NGj6dq1K19//bWMLBUOT27DCeFoMjMhMNDY+vLVVyEmxuLFhrSMNNovbU/clThWdlpJ1eJVLfr+ziQ2NpYJEybg7+9PRwuvnSGEEEI4vcxMY1ctPz8oXRp27cp2sSE5NZnB6wbzcsjLZGRmsKn7Jma8MsPhig1hYWEMHDiQV155RUZMCqchIxyEcCS3bhn7T69YYYxumDrVWLnZgrTWDIgYQPTJaELahNCoQiOLvr8zuXnzJv7+/pQpU4Zp06aZHUcIIYRwLNeuQffuxhTRbt1g1qxsT6GIORVDr9W9+O3qb7z9wtt84vMJBfMUtFJg64mIiKB79+40aNCAZcuW4erqanYkISxCCg5COIrERGPby9hY+OILGDrUKqeZsn0Kc/fN5b0G79HjmR5WOYezCAwM5MSJE2zevJkiRYqYHUcIIYRwHPv3w+uvGzttTZsGAwdCNqYPXL11lVEbRxG8N5gniz7Jlje20LB8QysGtp6tW7fSvn17atasSXh4OPnyOc56E0L8Gyk4COEIjh2DFi3g3DljdMNrr1nlNMuPLGdU9Cg61+jMuMbjrHIOZxEeHk5wcDAjRozg5ZdfNjuOEEII4TgWLIB+/aBoUdiyBerWfeBv1Vqz5PAShkYO5WLKRQJfCmRc43Hkd81vxcDWs3fvXlq1akWFChWIjIykcOHCZkcSwqKk4CCEvdu0Cdq3h9y5jfUa6tSxymliz8QS8F0AdT3r8k2bb2SRon9w4cIFevXqhbe3N+PHjzc7jhBCCOEYUlNh2DCYMcPYZWvJkmytQ3Xy6kkGrh1IZFwktT1qs67bOmqVrmXFwNZ19OhR/Pz8cHd3Z8OGDZQoUcLsSEJYnBQchLBnwcHw1ltQpYoxv/GJJ6xymlPXTtF6cWs8CnnwfSfZ/vKfaK3p3bs3169fZ/Pmzbi5uZkdSQghhLB/Z85Ahw6wcycMHw6TJhk3Ux5AWkYaX+78kg9jPiSXSy6+bP4lg14YRC4Xy65jZUvx8fH4+vqilGLjxo14enqaHUkIq5CCgxD2KD3duBh/9ZUxlWLxYrDSELs/tr9MzUglomsEJQpIdf2fzJ49mzVr1vDFF19QvXp1s+MIIYQQ9m/TJujc2Vj8etkyY+TmA9p1dhd9w/uy/8J+WldtzbQW0/As4th/nCcmJuLr68v169fZsmULlStXNjuSEFYje60IYW+SkqB1a6PYMHSoMbLBSsWGtIw0OizrwLHLx1jZcSVPFX/KKudxFsePH2fYsGH4+PgwePBgs+MIIYQQ9i0zEyZPBl9fKF4cfvrpgYsNV29d5a2It3hxzotcTLnIyo4rWdV5lcMXG65du0bz5s1JSEggIiICb29vsyMJYVUywkEIe/Lbb/Dqq8YikbNmQd++VjuV1pqBEQPZ+NtGvmnzDY0rNrbauZxBeno6AQEB5MmTR/bGFkIIIf7N5cvQowdEREDHjjB3LhT89+0qM3Um3+z7hlHRo7hy6wqDXhjEhCYTKOzm+IsppqSk8Oqrr3L48GHCw8OpV6+e2ZGEsDopOAhhL7ZuNXafyMyE9euhSROrnm7K9inM2TeHMfXH8MYzb1j1XM5g4sSJxMbGsnjxYsqWLWt2HCGEEMJ+7dxpFBkuXICvvzbWo3qAxaj3nNvDW2vfIvZsLPXL1Wdai2l4P+4cIwBSU1N5/fXX2b59O4sXL6Z58+ZmRxLCJuQWnRD2ICQEfHzgsccgNtbqxYZFBxf9uf3l+Cayy8K/iY2NZfz48fj7+9OpUyez4wghhBD2SWuYOhUaNDAWhNy+HQYN+tdiw+WUy/Rf05/nZz/PqWunCG0byg9v/OA0xYaMjAwCAgKIjIxk1qxZdOzY0exIQtiMjHAQwkwZGTBqFHz2GTRtCkuXGntSW9GWU1t4c9WbvFz+ZULahOCipO74T27evIm/vz9lypRh2rRpZscRQggh7NPVq/Dmm7BqlTFic948cHf/x2/JyMxg7r65jI4eTdLtJIbUGcJHjT6iSN4iNgptfVprBgwYwNKlS5kyZQp9+vQxO5IQNiUFByHMcuUKdOkCGzbAwIHw5Zfg6mrVUx65eIS2S9ryZNEn+a7Td7jlli0d/01gYCAnTpxg8+bNFCniPB0gIYQQwmJ27TKmUJw9C198AUOG/Ouohh8TfmRI5BB+OvcTDcs3ZFqLaXiV8rJRYNsZPXo0s2fPZvTo0YwYMcLsOELYnBQchDDDwYPQti0kJEBwMNig2n3uxjlaLGxB3tx5WddtHUXzWXckhTMIDw8nODiYESNG8PLLL5sdRwghhLAvWsN//gMjRkDp0rBtG9Sp84/fcvraaUZFj2LxocWULliahe0W0qVGF9QDrPHgaCZPnszkyZMZMGAAEydONDuOEKaQgoMQtrZihbFqc6FCEBMDdeta/ZQ37tyg1aJWXE65zA9v/kB59/JWP6eju3DhAr169cLb25vx42WdCyGEEOK/XLsGvXrBypXGDlshIVCs2H1ffjP1JkHbgvj8x88BeL/h+7xb710K5vn3nSsc0axZsxg1ahRdunRh2rRpTllQEeJBSMFBCFvJzIQPPoCJE43q/8qV4OFh9dOmZaTRcXlHDlw4QHiXcJ4t/azVz+notNb07t2b69evs2nTJtzcZOqJEI5KKeUJhAKPA5lAsNb6K6VUMWAJUAE4BXTUWl81K6cQDmX3bujUCU6fhk8/hcDA+06hyNSZzP95PmM2jeH3m7/Tzasbk3wm4VnE08ahbWfx4sUMGDCAV155hfnz58tW2iJHk59+IWwhKQlatzaKDT17wpYtNik2aK0ZGDGQyLhIZraaSYvKLax+Tmcwe/Zs1qxZQ1BQEDVq1DA7jhDi0aQDgVrrp4EXgbeUUtWAUUC01royEJ31tRDin2RmGgtdv/QSpKXBDz/A8OH3LTZsObWF2sG16bm6JxXcK7Cz106+bfetUxcb1q5dS0BAAA0aNGDZsmW4Wnl9LiHsnYxwEMLafv0V2rSB336D6dNhwIAH2ovaEiZuncicfXN4r8F79H62t03O6eiOHz/OsGHD8PHxYfDgwWbHEUI8Iq31eeB81uMbSqlfgDJAG6BR1svmAzHASBMiCuEYfv/dmBK6YQO0awezZ993CsXxy8cZFT2Klb+sxLOwJ4vaLaJzjc5OP61g69atvP7669SsWZPVq1eTL18+syMJYTopOAhhTatWQUAA5M0L0dHQsKHNTh26P5T3N79Pd+/ujGs8zmbndWTp6ekEBASQJ08eQkJCZAikEE5GKVUBqAXEAqWyihForc8rpUre53v6An0BypUrZ5ugQtib9euhe3e4fh1mzoS+fe958+T3m78zbss4gvcEkzd3XsY3Hk/gS4Hkc3X+P7z37t1Lq1atKF++PJGRkbKzlRBZpOAghDWkp8P770NQEDz3HHz3HXjabvhg9G/R9FrdC5+KPsx+dbbT31GwlIkTJxIbG8vixYspW7as2XGEEBaklCoIrACGaq2vP+jvRa11MBAMULt2bW29hELYodRUGDvWmEZRowZs2gTVq//Py67fuc5nOz7j8x8/JzUjlf61+/N+w/cpVbCUCaFt7+jRo/j5+eHu7k5UVBQlSpQwO5IQdkMKDkJY2oUL0KULbN5s3AH46itjhIONHLxwkHZL2/F08adZ0XEFeXLlsdm5HVlsbCzjx4+nW7dudOrUyew4QggLUkq5YhQbFmqtV2YdvqCUKp01uqE0kGheQiHs0PHjRn9mzx4YONAoOvxtikBqRiozd89k/A/juZRyiY7VOzKxyUQqFatkUmjbi4+Px9fXF6UUUVFReNrwBpMQjkAKDkJY0vbt0KEDXL0K33wDb7xh09MnJCXQclFLCuUpxNpuaymSV4bzPYibN2/i7++Ph4cH06ZNMzuOEMKClDGUYS7wi9Z66l1PrQZ6AEFZn1eZEE8I+7RggVFkcHU1dtV67bX/ejpTZ7Lk0BLGbhrLyWsnaVyhMZObTub5Ms+bFNgciYmJ+Pr6cv36dWJiYqhSpYrZkYSwO1JwEMIStDZGMowYAeXLw7p14O1t0whXbl3Bb6Ef1+9cZ+ubWylbWKYEPKjAwEBOnDjBpk2bcHd3NzuOEMKy6gEBwEGl1M9Zx8ZgFBqWKqV6AfFAB5PyCWE/rl+Ht96Cb7811p369tv/mhKqtWbDiQ2Mjh7Nvt/34V3Km8hukTR7slmOm76ZlJSEn58fCQkJREVF8cwzz5gdSQi7JAUHIR7VjRvQqxcsW2bsRhESAjb+o/VW2i1ah7Um7koc6/3XU7NUTZue35GFh4cTHBzMiBEjaNSokdlxhBAWprXeBtzvLyEfW2YRwq5t22YsdB0fDx9/bKzdkCvXn0/HnIrh/c3vsy1+G+WLlGfBawvo6tUVF5XzFlhOSUmhVatWHDp0iNWrV1OvXj2zIwlht6TgIMSjOHwYXn/dmOc4ebIxwsHGFf70zHQ6r+jMjoQdLO2wlEYVGtn0/I4sMTGR3r174+3tzfjx482OI4QQQtheaip89JHRj6lQAbZuhbp1/3x6R8IO3t/8PptObsKjkAfTW06nV61euOV2My2ymVJTU2nfvj3bt29n8eLF+Pn5mR1JCLsmBQchHlZoqDG/sWBBY8tLE+6Oa63pv6Y/q4+uZnrL6bSv1t7mGRyV1prevXuTlJREdHQ0bm45s+MkhBAiB/vlF/D3h717jdGaX3wBhQoBsOfcHt7f/D7r4tZRskBJpjabSv/a/XPEFpf3k5GRQffu3Vm3bh3BwcF07NjR7EhC2D0pOAiRXTdvGvMbQ0ON+Y1hYeDhYUqUDzZ/wNx9c3mvwXsMfH6gKRkc1Zw5cwgPD2fq1KnUqFHD7DhCCCGE7WgN06cbIzMLFjS2727bFjB2u/og5gO+//V7iuYtSpBPEINeGESBPAVMDm0urTUDBw5kyZIlTJkyhT59+pgdSQiHIAUHIbJj/37o1AmOHYMPPoD334fc5vxvNOOnGUzYOoHetXozrvE4UzI4quPHjzN06FB8fHwYMmSI2XGEEEII2zl3Dnr2hPXroUULmDcPHn+cIxePMG7LOJYeXkoht0J89PJHDH1xqOx4lWX06NEEBwczatQoRowYYXYcIRyGFByEeBBaw8yZMGwYFCtmTKFo3Ni0OMuPLGfQ2kG0rtqa/2v1fzluZehHkZ6eTkBAAHny5CEkJAQXl5y32JUQQogcasUK6NsXbt2CGTOgf39+vrCfCUsHsfKXleR3zc/o+qMJrBtIsXzFzE5rNyZPnszkyZPp378/n3zyidlxhHAoUnAQ4t9cuwa9exsXaT8/mD8fSpY0LU7MqRi6rezGS54vEfZ6GLld5H/j7Jg4cSKxsbEsXryYsmVl61AhhBA5QFISDBli9GFq14Zvv+WngtcZv7gN4cfCKexWmDENxjD0xaEUz1/c7LR2ZdasWYwaNYrOnTszbdo0uckjRDbJXypC/JNdu4wpFGfOwJQpEBgIJt4R3//7ftosbkOlYpUI7xJOftf8pmVxRLGxsYwfP55u3brRqVMns+MIIYQQ1rd+vXHj5Nw5eO89tr/ZlPE7hrD+xHqK5i3Kx40+ZnCdwbjnte2W3o5g8eLFDBgwgJYtWxIaGkquu7YJFUI8GKv95aSUmqeUSlRKHbrrWDGlVJRS6njW56LWOr8QjyQz0ygw1KtnTKfYutVYWMnEYsPJqyfxW+hHYbfCRHaLlKGO2ZScnExAQAAeHh5MmzbN7DhCCCGEdV2/bkyf8PNDFyrI5jVf06TSduovaMTe83sJ8gni1NBTfPDyB1JsuIe1a9cSEBBA/fr1WbZsGa6urmZHEsIhWXOEQwgwDQi969goIFprHaSUGpX19UgrZhAi+xISoEcP2LwZ2rWDOXOgqLm1scTkRJp/25zb6bfZ9uY2PIt4mprHEQUGBhIXF8emTZtwd5eOlRBCCCcWHQ09e5J5JoF1o15n0pPn2L7rLUoXLM3UZlPp+1zfHL/rxD/ZunUr7du3p2bNmoSHh5M/v4woFeJhWe12rdb6B+DK3w63AeZnPZ4PtLXW+YV4KEuXQs2axlSKuXNh+XLTiw1Jt5Pw+9aPM9fPsKbLGqqXrG5qHkcUHh7OrFmzCAwMpFGjRmbHEUIIIazj5k0YOJDU5k2Z//Qdak6uQKu8K4i/cYZpLabx25DfGPbSMCk2/IN9+/bRqlUrypUrR2RkJEWKyC4dQjwKW6/hUEprfR5Aa31eKWXeyntC3O36dXj7bQgNhTp14NtvoVIls1ORkpbCq2GvcijxEKu7rKZeuXpmR3I4iYmJ9O7dm5o1azJhwgSz4wghhBDWERPDjb5vMKf4aaaOLcgZlwt4FfBiQbMFdKreCddcMiXg3xw9epTmzZvj7u5OVFQUJUqUMDuSEA7PbheNVEr1BfoClCtXzuQ0wqnt2AH+/nD6NHzwAbz3HtjBPL20jDQ6LOvAtvhthL0ehl8lP7MjORytNb179yYpKYno6Gjc3NzMjiSEEEJYVnIyF8YM4etDc5ne3oVrbvBy+ecIrjcSv0p+sqvCA4qPj8fX1xeAqKgoPD1l+qoQlmDrgsMFpVTprNENpYHE+71Qax0MBAPUrl1b2yqgyEHS0mD8eJg4EcqXNxaGrFvX7FQAZOpMenzfg7XH1zLzlZl0qiE7KjyMOXPmEB4eztSpU6lRo4bZcYQQQgiLOhEeymdhg/jmyRukNoDXqrTi3YZjqFO2jtnRHEpiYiK+vr4kJSURExNDlSpVzI4khNOwdcFhNdADCMr6vMrG5xfC8OuvxsKQu3ZB9+7w9ddQuLDZqQDjrvzba98m7FAYk3wm0a92P7MjOaS4uDiGDRuGj48PQ4YMMTuOEEIIYRFaa7YfXseXoQP5Lt9pcldS9CjbisB2n1G1eFWz4zmcpKQk/Pz8SEhIYMOGDdSqVcvsSEI4FasVHJRSYUAjoLhS6gzwIUahYalSqhcQD3Sw1vmFuKeMDPjySxg7FgoUgCVLoGNHs1P9l/c3v8+M3TN4t+67jKo/yuw4Dik9PR1/f39cXV0JCQnBxcTtTIUQQghLSM1IZdnhpXy57iN23z5BURd4N/MlBg9ZSOniFc2O55BSUlJo1aoVBw8eZPXq1dSvX9/sSEI4HasVHLTWXe7zlI+1zinEPzp+HN58E7Zvh9atYdYsePxxs1P9l893fM7ErRPpXas3QU2DzI7jsCZOnEhsbCxhYWGULVvW7DhCCCHEQ7uUcongPcFM3/kfzqVcoOol+L+zngSMWUKB2i+ZHc9hpaam0r59e7Zv305YWBgtWrQwO5IQTsluF40UwmIyM2H6dBg5EtzcjJ0o/P3BzhZRmrdvHsOjhtOhWgdmtpopizw9pNjYWMaPH0+3bt3o3Lmz2XGEEEKIh3Lk4hG+3PklCw4s4Hb6bZqdysWcn/LQvMd4XL54B3JLN/5hZWRk0L17d9atW0dwcDCdOslaWUJYi/ymEs7t5Eno2RNiYqBFC5g9G8qUMTvV/1j5y0r6hPeh2ZPNWPDaAnK55DI7kkNKTk4mICAADw8Ppk2bZnYcIYQQIlsydSbr49bzZeyXbDixgby53AhIKMaQ785TvUZDWDUbnnzS7JgOTWvNW2+9xZIlS5g8eTJ9+vQxO5IQTk0KDsI5ZWZCcDCMGGGMZJgzxyg82OGogfVx6+myogt1ytRhZceVuOWWrRsfVmBgIHFxcWzatAl3d3ez4wghhBAP5MqtK3yz7xv+b/f/ceLqCUoXeJwJmY3o98V2ipMCn9tvP8bRjBkzhlmzZjFq1Cjeffdds+MI4fSk4CCcz7Fj0KcP/PADNG0Kc+dCuXJmp7qnmFMxtF3SlmolqhHRNYICeQqYHclhrVmzhlmzZjF8+HAaNWpkdhwhhBDiX+05t4cZP81g0aFF3E6/Tf1y9Rn/WHte/3gZeY7HQLdu8NlndrfmlKOaMmUKQUFB9O/fn08++cTsOELkCFJwEM4jLc24KH/8MeTLZxQa3nzTbu8G/JjwI60WteKJok+wwX8DRfMVNTuSw0pMTKRXr17UrFmTCRMmmB1HCCGEuK/b6bdZengpM36aQezZWPK75qeHdw8GlH8d7wlzYOlkqFIFNm4EH1lr3VKCg4MZOXIknTt3Ztq0abJWlhA2IgUH4Rx274ZeveDAAWjfHv7zHyhd2uxU97Xn3B78FvpRulBpNgZspESBEmZHclhaa3r37s21a9fYuHEjbm4yJUUIIYT9OXn1JLP2zGLuvrlcSrlE1ceq8pXfV/So3o0i8xZC19chNRXGjYN33zUWuhYWsWTJEvr370/Lli0JDQ0lVy5ZK0sIW5GCg3Bsycnw4YfwxRfGcMPvvoO2bc1O9Y8OXjhIs2+bUTRvUaK7R1O6kP0WRhzBnDlzCA8PZ+rUqXh5eZkdRwghhPhTWkYaEccjmL13NuuOr8NFudDmqTYMrD2QJhWboH76CRr6wr594OcH06bJopAWtm7dOvz9/alfvz7Lli3D1dXV7EhC5ChScBCOKyoK+vUzdqLo3x+CgqBIEbNT/aNfL/1K0wVNyZs7L5t6bKJcEftcW8JRxMXFMWzYMHx8fBgyZIjZcYQQQggATlw5wdx9c/nm52/4/ebvlC5YmrENxtKvdj/KFi4LFy8afZfZs40RmUuXGiM0ZZi/RW3dupXXX38dLy8vwsPDyZ8/v9mRhMhxpOAgHM+5c/DOO7BkiTHHccsWaNjQ7FT/6sSVE/iEGnMxo7tH80TRJ0xO5NjS09Px9/fH1dWVkJAQXFxczI4khBAiB7uTfofvf/2e2XtnE30yGhflQsvKLenzbB9aVm5JbpfckJ4OX38NH3wAN2/C0KHw0UdQuLDZ8Z3Ovn37aNWqFZ6enkRGRlLEzm9KCeGspOAgHMcfF+kPP/xrjuOIEZA3r9nJ/lV8Ujw+oT7cTr9NTI8Ynir+lNmRHN4nn3xCbGwsYWFhlC1b1uw4QgghcqhfLv7C7L2zCd0fyuVblylfpDzjGo3jzVpvGqMZ/rBpEwwZAocOga8vfPUVPP20ecGd2NGjR2nevDlFihQhKiqKkiVLmh1JiBxLCg7CMWzfDgMHGotCtmhhFB4cZI7j+Rvn8Qn14ertq2zqvgmvUrLOwKPatWsX48aNo2vXrnTu3NnsOEIIIXKYG3dusOKXFczZO4ftCdvJ7ZKbNlXb0OfZPvg+6YuLumvU3enTMHw4LF8OFSoY6021aSPTJ6wkISEBX19fADZu3Eg5O90aXYicQgoOwr5dugQjR8K8eeDpCStXGotCOshF+vyN8zQJbcL5G+fZELCB5zyeMzuSw0tOTsbf3x8PDw+mT59udhwhhBA5RKbOJOZUDCE/h7DilxWkpKVQuVhlJjedTA/vHpQqWOq/v+HWLZgyxVhjSikYPx4CA42tu4VVJCYm4uvrS1JSEjExMVSpUsXsSELkeFJwEPYpIwPmzoXRo+H6dWN7qPffh4IFzU72wP4oNiQkJbC221rqetY1O5JTCAwMJC4ujujoaNzd3c2OI4QQwskdv3yc+fvns+DAAuKT4insVphuXt1445k3eKnsS6i/3wTJzDTWmRo92hjd0KmTUXiQO+1WlZSUhJ+fH/Hx8WzYsIFatWqZHUkIgRQchD2KiTEWUdq/31gMcsYMqF7d7FTZ8vdiQ8Py9r+opSNYs2YNs2bNYvjw4TRu3NjsOEIIIZxU0u0klh5eSsj+EHYk7MBFueD7hC+Tm06mTdU25HO9zyiFrVuNUQw//QTPPAMhIdCokS2j50gpKSm8+uqrHDx4kNWrV1O/fn2zIwkhskjBQdiPU6eMRSCXLzfuAixZAh06OMz0iT9IscE6EhMT6dWrFzVr1mTChAlmxxFCCOFk0jPT2fjbRkL3h/Ldr99xarCwNgAAIABJREFUO/021UpUY3LTyfjX9MejkMf9v/nYMRg1ylifoUwZo9AQEACyg5LVpaam0qFDB7Zt20ZYWBgtWrQwO5IQ4i5ScBDmu3nTmN/42WeQK5dDz3GUYoN1aK3p06cP165dY+PGjbi5uZkdSQghhBPQWvPjmR9ZdHARSw8v5WLKRYrmLUqvWr3o4d2D2h61/3fKxN0uXTL6LTNmgJub8fiddyB/ftv9I3KwjIwMevTowdq1a5k1axadOnUyO5IQ4m+k4CDMk5kJCxcadwTOnQN/f5g0CRx0i0MpNljP3LlzWb16NZ9//jleXrLLhxDiwSml5gGtgEStdY2sY8WAJUAF4BTQUWt91ayMwvYOJR5i0cFFhB0K49S1U+TNnZfWVVvTtUZX/Cr54Zb7Xwrbt2/DtGkwYQLcuAF9+sBHH8Hjj9skvzCKRW+99RaLFy8mKCiIvn37mh1JCHEPUnAQ5ti0yVgIcs8eeP55YxrFSy+ZneqhSbHBeuLi4hg6dChNmjRh6NChZscRQjieEGAaEHrXsVFAtNY6SCk1KuvrkSZkEzZ06topFh9azKKDiziYeJBcKhe+T/oyrtE42j7VlkJuhf79TdLTYcECo7gQHw8tWxoLQjrYWlPOYMyYMcyaNYuRI0cycqT87yuEvZKCg7CtAweMbS4jI411GkJDoVs3h57jeO7GOXxCfaTYYAXp6en4+/vj6upKSEgILg78cyKEMIfW+gelVIW/HW4DNMp6PB+IQQoOTun3m7+z4sgKwg6FsT1hOwB1PesyrcU0OlTvQMkCJR/sjbSGFSuMHbN+/dW4WTJ3LjRtasX04n6mTJlCUFAQ/fr1Y9KkSWbHEUL8Ayk4CNuIjzcu0gsWgLu7sV7DW29B3rxmJ3skp6+dxifUhwvJF6TYYAWffPIJsbGxhIWF4enpaXYcIYTzKKW1Pg+gtT6vlLrvX51Kqb5AX4Bysq2hQzh/4zwrf1nJsiPL+OH0D2g0NUrWYJLPJDrX6EwF9woP/mZaQ1QUjBljjMp8+mmj8PDaaw63qLWzCA4OZuTIkXTq1Inp06f/8xobQgjTScFBWNfVq8a6DP/5j/H1iBHGmg1Fi5qbywLirsTRZH4TbqTeYGPARuqUrWN2JKeya9cuxo0bR9euXencubPZcYQQOZTWOhgIBqhdu7Y2OY64j7PXz/5ZZNgWvw2NplqJanzw8ge0r9aeGiVrZP9Nd+6E0aON7brLlzd2nvD3Nxa4FqZYsmQJ/fv3p0WLFoSGhpJL/lsIYfek4CCs4+ZNo8jw2Wdw7Rp07w7jxhnTKJzAkYtHaBralLTMNDb32Mwzjz9jdiSnkpycjL+/Px4eHkyfPt3sOEII53NBKVU6a3RDaSDR7EAi+85cP8OKIytYdmTZn9MlapSswUeNPqJ9tfZUK1Ht4d54zx74+GMID4eSJY3+TN++xi4UwjSRkZEEBARQv359li9fTp48ecyOJIR4AFJwEJaVkmJsDTV5srFVVKtWMHEi1KxpdjKL2Xd+H82+bUZul9xseWPLw3doxH0FBgYSFxdHdHQ07u7uZscRQjif1UAPICjr8ypz44gHdeLKCVYdXcXyI8v58cyPAHiV9GJco3F0qN6Bp4o/9fBvvnu3UWhYs8aY/jlhAgwZAgULWii9eFjbtm2jXbt21KhRg/DwcPLLtqNCOAwpOAjLuH0bZs0ypk9cuADNmxsX7TrONc0g9kwsfgv9KJSnENHdo6n8WGWzIzmdNWvWMGvWLAIDA2ncuLHZcYQQDk4pFYaxQGRxpdQZ4EOMQsNSpVQvIB7oYF5C8U+01uw5v4dVv67i+6PfcyjxEADepbyZ0HgC7au1p2rxqo92kl27jD7L2rXGlM/x4+Htt6FIEQv8C8Sj+vnnn2nVqhWenp5ERkZSRP67COFQpOAgHk1qqrFK88SJcPYsNG5sbHFZv77ZySxuy6kttAprRakCpYjuHk159/JmR3I6iYmJ9OrVCy8vLyZOnGh2HCGEE9Bad7nPUz42DSIeWGpGKltObWHV0VWsOrqKM9fP4KJcaFCuAV80/4I2VdtQsWjFRz/Rzp1GoSEyEooVM/oygwZB4cKP/t7CIo4dO0azZs0oXLgwUVFRlCz5gLuKCCHshhQcxMO5dcsoNEyZAgkJUK+esQOFk96RjjgWQYdlHajgXoGN3TfiUcjD7EhOR2tNnz59uHbtGhs3bsRN5soKIUSOcf3OdSLjIvn+1+9Ze3wtSXeSyJc7H80rNWdC4wm8UuUViucv/ugn0hp++MEYkbl+PTz2mPH4rbegUKFHf39hMQkJCTTN2nY0KipKdokRwkFJwUFkz/Xr8H//B1OnQmKiMZJh9mxo1sxpt4cK3R9Kz1U9eebxZ1jXbR0lCpQwO5JTmjt3LqtXr+bzzz/Hy8vL7DhCCCGsLO5KHBHHIlgbt5aYUzGkZqRSPH9x2j3djrZPtaXpE03J72qhufqZmbB6tbHG1M6dUKKE8XjgQFmjwQ4lJibi6+tLUlISMTExVK36iNNmhBCmkYKDeDCXL8NXX8HXXxu7TjRvbuxJ3bCh2cmsauqPUwncEEiTik34vtP3FHKTux/WEBcXx9ChQ2nSpAlDhw41O44QQggruJN+h63xW4k4FkHE8QiOXzkOwFPFn2LQ84No+1Rb6nrWJZeLBbc6TE2FhQuNEZm//goVKxqLW7/xBuTLZ7nzCItJSkrCz8+P06dPs2HDBmrVqmV2JCHEI5CCg/hnZ87AF18YC0ImJ8NrrxmFhtq1zU5mVVprxkSPIWh7EO2rtefb177FLbcM8beG9PR0/P39cXV1JSQkBBcXF7MjCSGEsJCz18+y9vha1satZeNvG7mZehO3XG40rtiYwXUG07JyS54o+oTlT3zjBgQHG32Ys2fB2xvCwqB9e8gt3V97lZKSwquvvsrBgwdZtWoVDRo0MDuSEOIRyW9ccW979xrTJpYsMeY7dukCo0ZB9epmJ7O69Mx0+q/pz9x9c+n3XD+mt5xu2bst4r988sknxMbGsmjRIjw9Pc2OI4QQ4hGkZaSx88xOIuMiiTgewf4L+wEoV6QcATUDaFm5JU0qNrHcVIm/i4+H6dONYsO1a9CokbHmlBNP/XQWaWlpdOjQgW3bthEWFkbLli3NjiSEsAApOIi/ZGZCRIRRaIiJMeY0Dhpk7EFdoYLZ6Wzidvptuqzowve/fs/7Dd/n40Yfo6SDYjW7du1i3LhxdO3alS5d7reQvBBCCHulteb4leNsOLGBDSc2sPnUZm6m3iSXykX9cvWZ3HQyr1R+hWolqlnveqo1/PgjfPklrFxpfN2uHYwYAS+8YJ1zCovKyMigR48erF27llmzZtGpUyezIwkhLEQKDgJSUiA01Bh2eOwYlC0Ln34KffrkqD2oL6Vcou3itmxP2M5Xfl8xuM5gsyM5teTkZPz9/fHw8GD69OlmxxFCCPGALqdcJvpkNFEnotjw2wbik+IBeLLokwTUDMD3CV8aV2yMe1536wZJTYVly4xCw+7d4O4O77xj7DhRXraudhRaawYNGkRYWBhBQUH07dvX7EhCCAuSgkNOduIEzJwJ8+bBlSvw3HOwaJExv9HV1ex0NhV3JY6WC1sSnxTPkvZL6Fi9o9mRnN7w4cOJi4sjOjoad3crd0qFEEI8tNSMVH5M+JENJzYQ9VsUu8/tRqMp4lYEnyd8GFN/DL5P+lpnLYZ7+f13mDPHWPzx/HmoWtV43L07FChgmwzCYsaOHcvMmTMZOXIkI0eONDuOEMLCpOCQ02RkwLp1xvzGyEjIlctYCPLtt6FBgxw5v/HHhB9pvbg1Wmuiu0dTr1w9syM5vYiICGbOnElgYCCNGzc2O44QQoi7pGWksfvcbjaf2szmU5vZHr+dW+m3yKVy8WLZF/mo0Uc0e7IZtT1qk9vFRl1JrWHzZuNGyXffQXq6sWPWvHnG+gyy4LBD+vTTT5k0aRJ9+/Zl0qRJZscRQliBFBxyiosXjUWTZs6E06ehdGn46CNj2oSHh9npTLP8yHL8V/pTtnBZ1nVbR+XHKpsdyeklJibSs2dPvLy8mDhxotlxhBAix0vPTGfv+b1sPrmZmNMxbD29leS0ZAC8SnrR59k+NKnYhEYVGlEkr42nWl6+DPPnG7tlHTsGxYrB4MHQt68xskE4rNmzZ/Puu+/SqVMnZsyYIWtmCeGkpODgzDIzITraqP6vXGnMdWzcGD77DNq0yXHTJu6mtebzHz9nRNQIXir7Eqs6r6JEgRJmx3J6Wmv69OnDtWvX2LhxI25ustWoEELYWkZmBvsv7GfzSWMEw9b4rVy/cx2AaiWq8cYzb9CoQiNeLv+yOddGrWHHDqPIsHQp3LkDdevCe+8Z0z7z5bN9JmFRS5cupV+/frRo0YLQ0FBy5ZLdwIRwVlJwcEanTkFICHzzjbE9VNGixp2AAQOgWjWz05nuTvod3lr7FnP3zaV9tfaEtg0ln6t0Xmxh7ty5rF69ms8//xwvLy+z4wghRI5wO/02P539iW3x29iWsI3t8dtJupMEQJXHqtClRhcaV2hMowqNKFWwlHlBz5yBBQuMPsyxY1CoEPTqBf36Qc2a5uUSFhUZGYm/vz/16tVj+fLl5MmTx+xIQggrkoKDs7h1y5jTOG+eMapBKfD1hSlTjNEMefOandAuXLh5gXZL27EjYQdjG4xlXONxuCiZ92kLcXFxDB06lCZNmjB06FCz4wghhNO6cusKOxJ2sPX0VrYlbGP3ud2kZqQCxgiGjtU78nL5l2lUoRFlCpcxN+ytW7BqlVFkiIoyRmc2aAAjR0LHjsYW3cJpbNu2jXbt2lG9enXCw8PJnz+/2ZGEEFYmBQdHlpEBW7bAwoWwYgUkJUGFCvDxx9Cjh2wJ9Td7z++lzeI2XE65LDtR2Fh6ejoBAQG4uroSEhKCiyzuJYQQFqG15nTSaWP0QtbH4YuHAXB1caW2R22G1BlCg3INqOtZl8fyP2ZyYowpE7GxRpFh8WKj/1KuHIwda+w0UamS2QmFFfz888+0atUKT09P1q9fLztUCZFDSMHB0WgNe/ca21cuXgznzhnV/3btICAAmjSRlZrvYcmhJby56k2K5y/O9p7bqVW6ltmRcpRJkyaxc+dOFi1ahKenp9lxhBDCYd1Mvcnuc7vZeWYnsWdj2XlmJ7/f/B2Awm6FqedZj65eXalfrj7PezxvP1MGtYaDByEszOi/nDplrMXw+uvwxhvGGlPSf3Fax44do1mzZhQuXJioqChKlixpdiQhhI1IwcFRHD0KS5YYhYajR40FH1u2hK5doVUrkCFp95Semc7Y6LFM2TGFep71WNFxhbnzU3OgXbt28fHHH9OlSxe6dOlidhwhhHAYmTqTXy7+8mdhIfZsLIcSD5GpMwGoXKwyvk/48mLZF6lfrj7VS1Qnl4udLb53/LhRYAgLg19+MbbjbtoUPvzQ2Ja7iI13vRA2l5CQgK+vLwBRUVGUK1fO5ERCCFuSgoO90hoOHDCmSqxcCYcPG+syvPwyBAYadwSKFTM7pV07d+McnZd3Zmv8Vvo/15+vWnxFnlyyMJEtJScn4+/vT+nSpZk+fbrZcYQQwq6du3GO3ed2E3smltizsew6u4sbqTcAKJq3KC+UeYHXnnqNOmXq8EKZF+xjesS9xMUZ60otWQJ79hjHGjSAGTOM/ovc3c4xLl68iK+vL9euXWPz5s1Ula1MhchxpOBgTzIzYdcuo8CwciWcOGEML2zQAL76ypg2Ubas2SkdwqaTm+iyogs3U2+ysN1Cunp1NTtSjjR8+HDi4uKIjo6maNGiZscRQgi7oLXm7I2z7Dm3hz3n97D3/F72nN/z59SIXCoX3o9741/TnxfLvkidMnWo/Fhl+13kWGv4+WejyPDdd3DokHH8ueeMrbg7dgSZTpfjJCUl4efnx+nTp1m/fj3PPvus2ZGEECaQgoPZkpNh0yaIiIA1a+DsWcidG3x8jBWa27SROwHZkJGZQdC2ID6I+YCqj1Vlc4/NVCshW4GaISIigpkzZxIYGEjjxo3NjiOEEKbQWpNwPeF/iguJyYkAuCgXni7+NM2ebMZzpZ/judLPUat0LfK72vlUyYwM2LHDuEHy/ffGmgwuLlC/PnzxBbRtayxkLXKkW7du0bp1aw4cOMCqVato2LCh2ZGEECaRgoMZTp40CgwREbB5M9y5Yyz86OtrzGd89VWQlXuzLT4pnu7fdWfL6S10qdGF4FeDKZhHttMyw8WLF+nVqxdeXl5MnDjR7DhCCGETqRmpHL10lP0X9nPgwgH2X9jP3vN7uZRyCTBGLlQrUY0WlVoYxQWP5/Au5U2BPAVMTv6ALl6E9eth7Vrj85UrkCeP0X957z2j/yI3SXK8tLQ0OnTowNatW1m0aBEtW7Y0O5IQwkRScLCF5GTYts3YXzoiAn791TheuTIMGACvvGJMm3BzMzenA1t0cBEDIwaSoTP4ps039PDugVLK7Fg5ktaaPn36cPXqVaKionCTn2shhBNKTE5k/+9/FRYOXDjAkYtHSMtMAyBPrjw8XfxpXq3y6p/FhZqlatr/yIW7ZWbC7t1GgWHdOvjpJ2P6RIkSxoLVLVtCixZQuLDZSYWdyMjIoEePHn+OcuzcubPZkYQQJpOCgzWkpRkX5eho2LgRfvzROJYnj7HoY//+xkW6cmWzkzq8K7eu8Pa6t1l0cBF1Peuy4LUFPFH0CbNj5Whz585l1apVfPbZZ3h5eZkdRwghLObM9TM0W9CMAxcOcCH5wp/HPQp5ULNUTfwq+VGzVE1qlqpJ1ceq4prL1cS0D0Fr+O03Y6rn5s3GjZJLl4xFq+vUgY8/NgoMzz4rW1iK/6G1ZtCgQYSFhTFp0iT69etndiQhhB2QgoMlpKXB/v2wdatRZNiyBW7eNC7QtWrBsGHGmgz168v2lRaitWbp4aUMjhzM5ZTLjGs0jtENRpPbRX6kzRQXF8fQoUNp3Lgxw4YNMzuOEEJYVGJyIpdvXaZF5RZ4l/L+s7hQPH9xs6M9vDNnjOLCpk3GR3y8cbx0afDzMwoMzZpBcQf+NwqbGDt2LDNnzuTdd99l1KhRZscRQtgJ+evsYdy4ATt3GtMktm0zHqekGM9VqQIBAUaBoXFj2brSChKSEhi4diBrjq2htkdtNvhvwPtxb7Nj5Xjp6ekEBASQO3du5s+fj4vc/RJCOJlapWuxp+8es2M8PK3h+HFjscft2+GHH+DYMeO5YsWMfsvIkdCkCVStatw4EeIBfPrpp0yaNIm+ffsSFBRkdhwhhB2RgsO/ycyEo0eNOYy7dhkX6P37jeMuLvDMM9C7tzF6oV498PAwO7HTSk5NZsr2KXy641OUUnze7HMG1xksoxrsxKRJk9i5cyeLFi3CU7Y/E0I4IYWD/QF+547Rf/mjwLBjh7HwIxiLU9etC/36GQWGmjVlmoR4KHPmzOHdd9+lU6dOzJgxQ9bQEkL8F/lL7W5aw+nTxvoLf3zs2WOMaABjOsSLLxorMdevbzwuVMjczDnArbRbfPPzN0zcOpFzN87RqXongpoGUcG9gtnRRJaffvqJjz/+mC5dutClSxez4wghRM6Tng6//GIUGHbvNvov+/ZBaqrxfKVKxvpR9eoZhYann5YCg3hky5Yto2/fvvj5+REaGkquXLnMjiSEsDM5t+Bw6xYcOQIHDsDBg8bn/fuNxZHAWODR2xv8/eH5542Pp58G+UVqM8cvHyd0fyiz9sziYspFXir7Ess6LKOuZ12zo4m7JCcn4+/vT+nSpZk+fbrZcYQQwvmlpho7Xu3b91dx4eefjb4NGDdDnn0WBg/+q8Ag21UKC4uMjKRbt27UrVuXFStWkCdPHrMjCSHskPMXHO7cgRMnjGkRhw8bhYUDB4w5jJmZxmvy5YMaNaBNG6hd2/jw8pJtKk1w/PJxIo5HsOTwEnae2YlC0aJyC96t+y4NyzeUYXp2aPjw4Rw7dozo6GiKFi1qdhwhhHAemZlw6pRxY+TQob8+Hz1qjGgAKFjQKC7072/0X557ztgFS0YvCCvavn077dq1o3r16qxZs4b8sii6EOI+nKPgoDVcuGBcgP/4+PVX4/PJk38VFgCefNIoJnTqZMxX9PIyjsnIBVNcTL7I9oTtxJyKIeJ4BHFX4gDwKunFlKZT6OrVlTKFy5icUtzPH/tsv/POOzRp0sTsOEII4Zhu3oS4OGMBx2PHjJsiv/5q3ChJTv7rdRUr/nWDxMvLGIlZpYr0YYRN/fzzz7zyyiuULVuWyMhI3N3dzY4khLBjjlNwSEoyigcnTxrV/j8e//H13RfkvHmNC/Czz0KXLsZKy1WrwlNPyZoLJkpOTeZg4kH2/76fXWd3sS1hG8cuG6tju+Vyo0nFJgypM4RXKr9CxaIVTU4r/s3Fixfp1asXXl5eTJw40ew4Qghhv7Q2Fms8fdros5w69d8FhnPn/vv1Zcsa/ZhevYzCgpcXVKsmfRhhumPHjtG8eXMKFSrExo0bKVWqlNmRhBB2zjEKDj//bKymfLdChYxK/5NPQtOm8MQTfxUVPD1lKKFJtNZcvnWZuCtxnLhyguNXjnP44mH2/76fuCtxaDQAxfIVo55nPXo+05P65erznMdz5M2d1+T04kFprenTpw9Xr14lKiqKvHnlv50QIofS2lhc+vx54+Pcub8KC6dP//Xxx/oKfyhe3Cgq+Poan//4qFTJWKRaCDuTkJCAr68vmZmZREVFUa5cObMjCSEcgCkFB6WUH/AVkAuYo7X+5w17ixWDESOMAkPFilChgnFM5vPbXHJqMmdvnOXcjXOcvX72r8c3znLy6knirsSRdCfpz9crFE8UfQLvx73xr+mPdylvvB/3pnyR8rIegwObN28eq1at4rPPPsPLy8vsOEII8VCy3R/5/XcYOvSv4sIfH3ePsvxD8eJQvrwxMqFlS+Nx+fJGH6Z8+f+9kSKEHbt48SK+vr5cu3aNzZs389RTT5kdSQjhIJTW2rYnVCoXcAzwBc4APwFdtNZH7vc9tWvX1rt377ZRQueWqTO5mXqTm6k3uXHnxl+PU2+QdDuJy7cucznlMlduXTEeZ339x+cbqTf+5z0LuBagTOEyVHCvQKWilahUzPio/FhlKrpXxC23LL7pTE6cOIG3tzcvvPACGzduxEVGEwlhGqXUHq11bbNzOKKH6o8opXcXKgSlS9//w8MDypWDAgVs9C8RwrqSkpJo0qQJR44cYf369TRs2NDsSEIIO/NP/REzRji8AMRprX8DUEotBtoA973APwitNRp9z8/AfZ/7Y4i/pb8/IzOD9Mx0MnTGfz1Oz0x/oK///lx6Zjp3Mu5wO/02d9Lv3Ptxxp3/ee52+u0/Cwo3U2+SkpbyQO1ZNG9RiuUrxmP5H6NkgZI8XeJpHsv3GI8XfByPQh6UKVSGMoXL4FHIg8JuhR/lP91Dy06x7EFfa+nXOdu5MzIy8Pf3J3fu3MyfP1+KDUIIR5b9/kitWrB3r23SCWFhD3OT8datW7Ru3ZoDBw6watUqKTYIIbLNjIJDGSDhrq/PAHX+6Rv27N2Dcvvb8PtHGZhhjUEdtn7Pu5vjb6+711QFhUJrjULd9/m7JekkkkjiJCf/OaIV/kgW9m/hwoV4enqaHUMIIR5Ftvsj+/bvp2DBgtk6ycNe/x7m++RcjnWuR/k+W1JKsXDhQlq2bGl2FCGEAzKj4HCvifv/89tWKdUX6Jv15U1SOWrVVNZRHLhk65Pqe1Qq7j52r+edgCltnUMV79at26Vu3bqZnSOnkJ9t23HEti5vdgAH9lD9keTkZHvsjzjiz66ZpL2yQWtdvGvXrpe6du1qdhRHIT9f2SPtlT322l737Y+YUXA4A9x9a7QscO7vL9JaBwPBtgplDUqp3TK31jakrW1H2tq2pL1tR9o6x3Ga/oj87GaPtFf2SHtlj7RX9kh7ZY8jtpcZE7B/AiorpSoqpfIAnYHVJuQQQgghRM4l/REhhBDCymw+wkFrna6UGgSsx9iGap7W+rCtcwghhBAi55L+iBBCCGF9ZkypQGu9FlhrxrltzK6HYDoZaWvbkba2LWlv25G2zmGcqD8iP7vZI+2VPdJe2SPtlT3SXtnjcO2lHGF1XCGEEEIIIYQQQjgWM9ZwEEIIIYQQQgghhJOTgoOFKKXclVLLlVK/KqV+UUq9pJQqppSKUkodz/pc1OyczkApNUwpdVgpdUgpFaaUyittbTlKqXlKqUSl1KG7jt23fZVSo5VScUqpo0qp5uakdkz3aetPs36PHFBKfaeUcr/rOWnrh3Svtr7rueFKKa2UKn7XMWlrYZekv5E90mf4d3Ldzx65dmePXH+z537tpZR6O6tNDiulptx13O7bSwoOlvMVEKm1fgrwBn4BRgHRWuvKQHTW1+IRKKXKAIOB2lrrGhgLfXVG2tqSQgC/vx27Z/sqpaphtH/1rO+ZoZTKZbuoDi+E/23rKKCG1romcAwYDdLWFhDC/7Y1SilPwBeIv+uYtLWwZ9LfeEDSZ3hgIch1PztCkGt3doQg19/sCOFv7aWUagy0AWpqrasDn2Udd4j2koKDBSilCgMNgbkAWutUrfU1jB+M+Vkvmw+0NSeh08kN5FNK5QbyY+ybLm1tIVrrH4Arfzt8v/ZtAyzWWt/RWp8E4oAXbBLUCdyrrbXWG7TW6Vlf7gTKZj2Wtn4E9/m5BvgCeBe4e0EjaWthl6S/8VCkz/Av5LqfPXLtzh65/mbPfdprABCktb6T9ZrErOMO0V5ScLCMJ4CLwDdKqX1KqTlKqQJAKa31eYCszyXNDOkMtNZnMap68cB5IElrvQFpa2u7X/uWARLuet2ZrGPCMnoC67IeS1tbmFKqNXBWa73/b09JWwt7Jf2NbJA+wyOR6/7Dk2v3v5Drb7ZVARoopWKVUluUUs9nHXeI9pKCg2XkBp4F/k9rweoAAAADr0lEQVRrXQtIRobnWUXWHMI2QEXAAyiglPI3N1WOpu5xTLa+sQCl1FggHVj4x6F7vEza+iEppfIDY4EP7vX0PY5JWwt7IP2NbJA+g1XI78d/INfufyfX34eSGygKvAiMAJYqpRQO0l5ScLCMM8AZrXVs1tfLMToEF5RSpQGyPife5/vFg2sKnNRaX9RapwErgbpIW1vb/dr3DOB51+vKYgxXFY9AKdUDaAV003/tXSxtbVlPYvwRsl8pdQqjPfcqpR5H2lrYL+lvZI/0GR6eXPezSa7dD0yuv9l3BlipDbuATKA4DtJeUnCwAK3170CCUqpq1iEf4AiwGuiRdawHsMqEeM4mHnhRKZU/q7Lng7FglrS1dd2vfVcDnZVSbkqpikBlYJcJ+ZyGUsoPGAm01lqn3PWUtLUFaa0Paq1Laq0raK0rYFy0n836fS5tLeyS9DeyTfoMD0+u+9kg1+4HJ9ffh/I90ARAKVUFyANcwkHaK7fZAZzI28BCpVQe4DfgTYyCzlKlVC+Mi14HE/M5Ba11rFJqObAXY8jaPiAYKIi0tUUopcKARkBxpdQZ4EMgiHu0r9b6sFJqKUaHNx14S2udYUpwB3Sfth4NuAFRRv+YnVrr/tLWj+Zeba21nnuv10pbCzsn/Y0HJH2GByPX/eyRa3f2yPU3e+7z8zUPmKeMrTJTgR5Zo2gcor3UXyN+hBBCCCGEEEIIISxDplQIIYQQQgghhBDC4qTgIIQQQgghhBBCCIuTgoMQQgghhBBCCCEsTgoOQgghhBBCCCGEsDgpOAghhBBCCCGEEMLipOAghHhgSqmxSqnDSqkDSqmflVJ1zM4khBBCiJxF+iNCOI7cZgcQQjgGpdRLQCvgWa31HaVUcSCPybGEEEIIkYNIf0QIxyIFByHEgyoNXNJa3wHQWl8yOY8QQoj/b+cOcSIKgiCAVluygksQLMmeA4cHxYU4xd4BQ7LHwKCxSJJGYJA/ZMJnMu/JUS0rlZ6G9cgjMJHq7r1nACZQVYck5yQXSZ6TnLr7Zd+pAICVyCMwFzccgE26+yPJMcljkvckp6p62HUoAGAp8gjMxYYD8CtVdZfkvrtv954FAFiTPAL/mw0HYJOquq6qqx9PN0ne9poHAFiPPAJzcTQS2OqQ5KmqLpN8JnnN9zojAMBfkUdgIr5UAAAAAMP5UgEAAAAMp3AAAAAAhlM4AAAAAMMpHAAAAIDhFA4AAADAcAoHAAAAYDiFAwAAADCcwgEAAAAY7guW7YJ/thArZAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 1296x432 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize=(18,6))\n",
    "ax1 = fig.add_subplot(121); ax2 = fig.add_subplot(122)\n",
    "\n",
    "ax1.plot(BS.S_vec, BS.price_vec, color='red',label=\"BS curve\")\n",
    "ax1.plot(VG2.S_vec, VG2.price_vec, color='green',label=\"VG curve\")\n",
    "ax1.plot(VG2.S_vec, VG2.payoff_f(VG2.S_vec), color='black',label=\"Payoff\")\n",
    "ax1.set_xlim(50,150); ax1.set_ylim(0,50)\n",
    "ax1.set_xlabel(\"S\"); ax1.set_ylabel(\"price\"); ax1.set_title(\"VG vs BS - same variance - negative skewness\")\n",
    "ax1.legend()\n",
    "\n",
    "ax2.plot(BS.S_vec, BS.price_vec, color='red',label=\"BS curve\")\n",
    "ax2.plot(VG3.S_vec, VG3.price_vec, color='green',label=\"VG curve\")\n",
    "ax2.plot(VG3.S_vec, VG3.payoff_f(VG3.S_vec), color='black',label=\"Payoff\")\n",
    "ax2.set_xlim(50,170); ax2.set_ylim(0,80)\n",
    "ax2.set_xlabel(\"S\"); ax2.set_ylabel(\"price\"); ax2.set_title(\"VG vs BS - same variance - positive skewness\")\n",
    "ax2.legend()\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## References\n",
    "\n",
    "[1]  Madan, D., Carr, P., and Chang, E. (1998). \"The Variance Gamma process and option pricing\". European Finance Review, 2, 79--105."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
